0

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

4

1 回答 1

2

您需要存储一个变体向量;这与变体类型之一的向量不兼容。换句话说,你可以这样做:

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

于 2013-06-22T10:41:33.110 回答