Я объявил 3D-вектор vector<vector<vector<boost::variant<string, float>>>> masterList;
, который будет заполнен разнородными данными (строки & float), это правильный путь? потому что я столкнулся с проблемой позже с инструкцией masterList.push_back(tokens);
, в которой я определил std::vector<vector<string>> tokens;
Boost 3D vector
0
A
ответ
1
Вектор вариантов - это то, что вам нужно сохранить; это несовместимо с вектором одного из типов варианта. Другими словами, вы можете сделать это:
vector<vector<vector<boost::variant<string, float>>>> masterList;
std::vector<vector<boost::variant<string, float>>> tokens;
masterList.push_back(tokens);
Но если ваши данные таким образом, что «дисперсия» происходит только на внешнем измерении, вы могли бы вместо того, чтобы сделать это:
vector<boost::variant<vector<vector<string>>, vector<vector<float>>>> masterList;
std::vector<vector<string>> tokens;
masterList.push_back(tokens);
Вы также можете пересмотреть, нужна ли вам полная гибкость (и сопутствующие издержки) вектора векторов векторов. Если ваши данные прямоугольные (не зубчатые), вы можете улучшить ситуацию, описанную здесь: https://stackoverflow.com/a/17005753/4323