vector<vector<vector<boost::variant<string, float>>>> masterList;
異種データ (文字列とフロート) で満たされる3D ベクトルを宣言しましたが、これは正しい方法ですか? masterList.push_back(tokens);
後で定義した命令で問題に直面しているためstd::vector<vector<string>> tokens;
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 に答える