2013-06-22 127 views
0

我已经声明了一个3D矢量vector<vector<vector<boost::variant<string, float>>>> masterList;这将填充异构数据(字符串&浮点数)这是正确的方法吗?因为我后来面对的问题是masterList.push_back(tokens);,因此我定义了std::vector<vector<string>> tokens;Boost 3D矢量

回答

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