check type of element in stl container — c++
how can i get the type of the elements that are held by a STL container?
7 Answers 7
For containers in general it will be X::value_type . For associative containers it will be X::mapped_type ( X::value_type corresponds to pair<const Key,T> ). It is according to Chapter 23 of C++ Standard.
To check that types are equal you could use boost::is_same . And since C++11 — std::is_same .
Checking whether two types are the same can be achieved like this (without RTTI, value is usable at compile-time):
(This is basically how boost::is_same works, minus workarounds for certain compilers.)
In what sense? Maybe using RTTI and typeid()?
Probably you have to use container::valuetype where container is the name of your container (for example std::vector)
Use something like this:
You need to give us more context. If you mean you want the value known at compiletime so it’s easy to change it then use container::value_type .
If what you mean is that the container may hold various concrete (derived) types and you wish to know them at runtime then you should probably re-evaluate your approach. In object-oriented programming hiding the type at runtime is sometimes a powerful approach, because it means you make fewer assumptions about what you’re working with. You can of course use RTTI, but there’s probably a better way: we’d need more context to tell.
If you wish to compare types then you’re probably heading the runtime path. C++ supports polymorphism, which is essentially that type-comparison you’re looking after — but built into the language. You want to execute a different set of instructions based on the type? Polymorphism allows you to execute a different function based on the type of the object. You need not write a single extra line of code — only derive from a common base.
Тип значения в 1С
Разберем методы, при помощи которых, в 1С 8.3 можно определить тип значения переменной (или реквизита какого-нибудь объекта). Причем, эти методы могут работать со всеми типами: примитивными, объектными и коллекциями значений.
Для работы с типами, в платформе 1С имеется специальный тип, который так и называется Тип. Этот тип необходим для идентификации типов значений различных данных. Значения типа Тип возвращают только две функции Тип и ТипЗнч.
Функция ТипЗнч в 1С
Разберем функцию ТипЗнч. Эта функция принимает в качестве параметра любое значение и возвращает тип этого значения.
Рассмотрим пример: будем использовать в качестве параметра этой функции число, таблицу значений и объект какого-нибудь справочника.
Посмотрим в отладке, что вернет этот метод.

Как видите, все значения, которые вернул метод ТипЗнч имеют тип Тип. Но, сами по себе знания о том, какой тип у того или иного значения нам ни чего не дают. Разве что можно сравнить одинаковы ли типы у двух разных значений. Эти знания применимы только тогда, когда можно точно определить какого типа наше значение. Делается это при помощи функции Тип.
Функция Тип в 1С
Функция тип имеет один параметр имя получаемого типа в строковом представлении, возвращает тип Тип.
Переделаем предыдущий пример: будем получать типы значений, используя функцию Тип.
В переменных будут те же значения, что и в прошлый раз.

Чтобы быстро получить название какого-то типа, достаточно «задержаться» в написании после первой кавычки, или нажать комбинацию клавиш Ctrl+Пробел.

Появится выпадающий список всех названий типов, где набирая первые символы названия можно быстро найти нужный тип.

Обе функции Тип и ТипЗНЧ возвращают значения одного типа – Тип. Но, если в случае функции ТипЗнч мы не можем точно знать, что вернет эта функция (поскольку, иногда, возникают ситуации, когда точно не известно какого тип та или иная переменная), то при работе с функцией Тип, мы точно знаем, какое значение вернет эта функция, поскольку сами указали строковое представление типа в параметре.
Как проверить тип значения
Для того, чтобы проверить какой тип значения у той или иной переменой, достаточно использовать обе этих функции (Тип и ТипЗнч) вместе: сравнивая, что возвращает функция ТипЗнч, в параметре которой указано какое-либо значение, с функцией Тип, в параметре которой мы указали конкретный тип.
Рассмотрим пример: будем заполнять массив значениями разных типов, потом при помощи генератора случайных чисел выберем нужный элемент массива, и определим какого типа этот элемент массива. В этот массив поместим число, дату, строку и какой-нибудь список значений.
В этом коде я использовал условие, где обрабатывал сравнение значений, которые возвращают функции Тип и ТипЗнч.

Статьи о примитивных типах в 1С:
Более подробно и основательно начальные вопросы программирования в 1С есть вы можете изучить в
Книга «Программировать в 1С за 11 шагов»
Изучайте программирование в 1С в месте с моей книгой «Программировать в 1С за 11 шагов»

Книга написана понятным и простым языком — для новичка.
- Книга посылается на электронную почту в формате PDF. Можно открыть на любом устройстве!
- Научитесь понимать архитектуру 1С;
- Станете писать код на языке 1С;
- Освоите основные приемы программирования;
- Закрепите полученные знания при помощи задачника.
О том как разрабатывать под управляемым приложением 1С, читайте в книге Книга «Основы разработки в 1С: Такси»
Отличное пособие по разработке в управляемом приложении 1С, как для начинающих разработчиков, так и для опытных программистов.

- Очень доступный и понятный язык изложения
- Книга посылается на электронную почту в формате PDF. Можно открыть на любом устройстве!
- Поймете идеологию управляемого приложения 1С
- Узнаете, как разрабатывать управляемое приложение;
- Научитесь разрабатывать управляемые формы 1С;
- Сможете работать с основными и нужными элементами управляемых форм
- Программирование под управляемым приложением станет понятным
Промо-код на скидку в 15% — 48PVXHeYu
Эти книги, плюс книга по программированию оперативного учета имеются в едином комплекте: комплект книг по разработке в 1С.
Только для читателей моего блога,
промо-код на скидку в 300 рублей на весь комплект: blog
Если Вам понравился этот урок, был полезен или помог решить какую-нибудь проблему, то Вы можете поддержать мой проект, перечислив любую сумму.
можно оплатить вручную:
Яндекс.Деньги — 410012882996301
Web Money — R955262494655
как узнать тип элемента void * array в С++
Теперь Void * elem, может быть ((function, class, variable, scope)) все из них r классов, я хочу напечатать таблицу Symbol, чтобы проверить, что делают Yacc и parser !! Я пытался это сделать:
код работает отлично, но он не проверяет [void type] в инструкции If, всегда вводите первое условие, даже если кастинг ошибочен, в этом порядке всегда вводится тип, даже void является функцией или переменной. когда я их заменил, также введите первый stmt, что бы то ни было! Почему так?? и как я могу это исправить?? или как я могу узнать, какой тип данных я должен использовать.
Традиционным ответом является добавление перечисления в MapElem для указания типа:
Чем больше OO-способ, так это ввести базовый класс и подклассы для каждого типа. Вы можете обнаружить, что это немного громоздко, потому что типы переменных (функция, класс, переменная и область видимости) настолько расходятся, что ваш базовый класс будет содержать немного больше, чем способ извлечения типа! Ох и некоторый метод, который возвращает строку для печати для проверки элементов.
Вы можете ввести виртуальный член, который возвращает тип перечисления или полагаться на RTTI. RTTI обычно является ошибкой, указывающей на то, что вы не понимаете полиморфизм или это действительно не помогает ситуации. В этом случае я подозреваю последнего.
Как узнать тип элемента с
Как получить тип элемента абсолютно любой коллекции (IEnumerable) C#?
Site design / logo © 2022 Stack Exchange Inc; user contributions licensed under CC BY-SA . rev 2022.10.5.37263
C#. Урок 7. Типы перечислений enum
Типы перечислений enum
Тип System.Enum
- При объявлении перечисления использовать атрибут flags.
- Константы должны быть определены как степень двойки. Для констант лучше использовать только положительные значения.
C#. Урок 7. Типы перечислений enum : 1 комментарий
Определить тип переменной. Динамический анализ
Заранее прошу прощения если что то сделаю не так, это мое первое сообщение Мне нужно определить.
Преобразования типов. Определить тип переменной
Всем привет Недавно начал изучать язык C++ по книжке "Объектно-ориентированное программирование.