смешанные типы данных std :: vector [дубликаты]

0

Я пытался прочитать список чисел и букв в std::vector<char>. Поскольку это приводило к ошибкам, я пытался читать только цифры:

#include <vector>
#include <iostream>
using namespace std;
int main(int argc, char const *argv[])
{
    vector<char> zahlen;
    for (int i = 0; i < 10; ++i)
    {
        zahlen.push_back(i);
    }
    for (int i = 0; i < zahlen.size(); ++i)
    {
        cout<<zahlen[i];
    }
    cout<<endl;
    return 0;
}

Это приводит к некоторым странным выводам. Что я делаю не так? Как хранить несколько типов данных в векторном или другом контейнере?

РЕДАКТИРОВАТЬ:

cout<<(int)zahlen[i];

Это сделало работу по отображению содержимого, но как определить различные типы данных?

Теги:
c++11
vector

1 ответ

2
Лучший ответ

Основываясь на вашем цикле for, я буду предполагать, что когда вы сказали "цифры", вы на самом деле имели в виду "десятичные цифры".

Вы можете использовать std::vector<char> для хранения десятичных цифр и букв, но все они будут представлены как char. Вы можете учитывать это, используя кодировку символов вашей системы для хранения десятичных цифр. Один простой способ:

    vector<char> zahlen;
    for (int i = 0; i < 10; ++i)
    {
        zahlen.push_back('0' + i);
    }

Если вместо "десятичных цифр" вы действительно имеете в виду произвольные числа, вам нужно что-то более сложное, чем char для вашего vector. Как было предложено в комментариях, Boost.Any - это возможность.

  • 1
    Boost.Any всесторонний, но это не так сложно собрать что-то более простое самостоятельно. Посмотрите это демо для примера.
  • 0
    Или просто используйте кортеж ...
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню