0
我已经声明了一个3D矢量vector<vector<vector<boost::variant<string, float>>>> masterList;
这将填充异构数据(字符串&浮点数)这是正确的方法吗?因为我后来面对的问题是masterList.push_back(tokens);
,因此我定义了std::vector<vector<string>> tokens;
Boost 3D矢量
我已经声明了一个3D矢量vector<vector<vector<boost::variant<string, float>>>> masterList;
这将填充异构数据(字符串&浮点数)这是正确的方法吗?因为我后来面对的问题是masterList.push_back(tokens);
,因此我定义了std::vector<vector<string>> tokens;
Boost 3D矢量
变体的向量就是你需要存储的;这与一个变体类型的向量不兼容。换句话说,你可以这样做:
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