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 に答える