Я предполагаю, что вам нужен контейнер, в котором можно хранить целые числа или символы.
Сначала взгляните на тип данных boost::any
в Boost , который может помочь. Затем вы можете создать контейнер из boost::any
экземпляров.
Если вы не хотите использовать boost
или это кажется излишним, используйте union
следующим образом:
typedef struct {
char type;
union {
char character;
int integer;
};
} my_struct;
Содержимое полей character
и integer
в объединении занимает те же слоты памяти. (Ну, integer
использует больше слотов, поскольку символы обычно составляют только один байт). Затем вам нужно установить в поле type
структуры, скажем, 'c'
, если вы храните символ, и, скажем, 'i'
, чтобы сохранить целое число, а затем получить доступ к содержимому структуры, используя character
или integer
поле в зависимости от значения type
.
Наконец, есть также QVariant тип данных Qt, который работает аналогично второму подходу, описанному выше.