だからC#で、私は次のようなものを持っている:C++の辞書のC#と同等 'とリスト
Dictionary<string, List<string>>
C++であることを行うための最も効率的な方法は何ですか?私はC++が 'map'と 'list'を持っていることを知っていますが、私はまだこの関数を書く擬似コード段階にあるので、このようなものがC++でも可能かどうか疑問に思っていました。もしそうなら、それと同等のデータ構造を作る最良の方法は?
おかげ
だからC#で、私は次のようなものを持っている:C++の辞書のC#と同等 'とリスト
Dictionary<string, List<string>>
C++であることを行うための最も効率的な方法は何ですか?私はC++が 'map'と 'list'を持っていることを知っていますが、私はまだこの関数を書く擬似コード段階にあるので、このようなものがC++でも可能かどうか疑問に思っていました。もしそうなら、それと同等のデータ構造を作る最良の方法は?
おかげ
なので、このようなことがC++でも可能かどうかは疑問です。
はい。 STLの機能はさまざまな異なる容器です:http://www.cplusplus.com/reference/stl/。
もしそうなら、それと同等のデータ構造を作る最良の方法は?
要件によって異なります。例std::list
対std::vector
ため(詳細についてはhereを参照)
私はちょうどあなたがこのようなものを使用することをお勧め単純なケースの場合:
#include <vector>
#include <map>
#include <string>
int main()
{
std::map<std::string, std::vector<std::string>> map_of_strings;
map_of_strings["a"] = { "1", "2", "3" };
map_of_strings["b"] = { "4", "5", "6" };
map_of_strings["c"] = { "7", "8", "9" };
return 0;
}
これは、ファイルから情報を読み込み、それをxml形式の別のファイルに書き込むだけです。ディクショナリ/マップのキーは外部ノードになりますが、そのディクショナリの 'value'の場所にあるリスト/ベクタは内部ノードになります。問題は、メモリオーバーヘッドが問題になるほど大きくなる可能性があることです。プラスは、いったん辞書が書かれると、単純なネストループでxmlに書き込む以外の変更(追加、変更など)を必要としないことです(辞書のすべてのキーについて、すべてのリストの値)。 –
あなたが使用することができます:map<string, vector<string>>
。 Map
はC#Dictionary
に最も近く、Vector
〜C#List
です。
我々は抽象離れて任意の言語から、存在する場合:
サイズ変更可能な配列 - C#でList
、キーと値のペアのC++
コレクション/コンテナ内Vector
からDictionary
は、C#とMap
にC++
のstd ::マップ、のstd :: unordered_map – Starl1ght
'STD: :map> –