2013-06-22 2 views
0

Я объявил 3D-вектор vector<vector<vector<boost::variant<string, float>>>> masterList;, который будет заполнен разнородными данными (строки & float), это правильный путь? потому что я столкнулся с проблемой позже с инструкцией masterList.push_back(tokens);, в которой я определил std::vector<vector<string>> tokens;Boost 3D vector

ответ

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