我已经声明了一个3D向量vector<vector<vector<boost::variant<string, float>>>> masterList;
,它将填充异构数据(字符串和浮点数),这是正确的方式吗?因为稍后我在定义std::vector<vector<string>> tokens;
时会遇到masterList.push_back(tokens);
指令的问题
发布于 2013-06-22 18:41:33
变体的向量是您需要存储的内容;这与变体类型之一的向量不兼容。换句话说,你可以这样做:
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
https://stackoverflow.com/questions/17249707
复制相似问题