C ++: вектор векторов - PullRequest
6 голосов
/ 31 мая 2011

Мне нужно создать вектор векторов (точнее, вектор из 3 векторов). Каждый составляющий вектор имеет свой тип данных (String, double, определенный пользователем тип данных). Возможно ли это в C ++? Если нет, есть ли другой элегантный способ реализовать мое требование?

Ответы [ 4 ]

14 голосов
/ 31 мая 2011

Если вы знаете, что их трое и знаете их типы, почему бы просто не написать класс?

class Data
{
    std::vector<std::string> _strings;
    std::vector<double> _doubles;
    std::vector<UserDefined> _userDefined;
public:
    // ...
};

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

3 голосов
/ 31 мая 2011
template<typename T> struct inner_vectors {
    std::vector<double> double_vector;
    std::vector<std::string> string_vector;
    std::vector<T> user_vector;
};

std::vector<inner_vectors<some_type>> vector_of_vectors;
1 голос
/ 31 мая 2011

Структура или класс - это, по моему мнению, лучший путь и самое элегантное решение.

0 голосов
/ 31 мая 2011

Это то, что вы имеете в виду?

vector<tuple<vector<string>, vector<double>, vector<T> > >
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...