2016-04-01 9 views
2

だからC#で、私は次のようなものを持っている:C++の辞書のC#と同等 'とリスト

Dictionary<string, List<string>> 

C++であることを行うための最も効率的な方法は何ですか?私はC++が 'map'と 'list'を持っていることを知っていますが、私はまだこの関数を書く擬似コード段階にあるので、このようなものがC++でも可能かどうか疑問に思っていました。もしそうなら、それと同等のデータ構造を作る最良の方法は?

おかげ

+0

のstd ::マップ、のstd :: unordered_map – Starl1ght

+0

'STD: :map > –

答えて

4

なので、このようなことがC++でも可能かどうかは疑問です。

はい。 STLの機能はさまざまな異なる容器です:http://www.cplusplus.com/reference/stl/

もしそうなら、それと同等のデータ構造を作る最良の方法は?

要件によって異なります。例std::liststd::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; 
} 
+0

これは、ファイルから情報を読み込み、それをxml形式の別のファイルに書き込むだけです。ディクショナリ/マップのキーは外部ノードになりますが、そのディクショナリの 'value'の場所にあるリスト/ベクタは内部ノードになります。問題は、メモリオーバーヘッドが問題になるほど大きくなる可能性があることです。プラスは、いったん辞書が書かれると、単純なネストループでxmlに書き込む以外の変更(追加、変更など)を必要としないことです(辞書のすべてのキーについて、すべてのリストの値)。 –

1

あなたが使用することができます:map<string, vector<string>>MapはC#Dictionaryに最も近く、Vector〜C#Listです。

我々は抽象離れて任意の言語から、存在する場合:

サイズ変更可能な配列 - C#でList、キーと値のペアのC++

コレクション/コンテナ内VectorからDictionaryは、C#とMapにC++