2016-03-19 20 views
-2

3つのベクトルをunordered_mapの値として格納し、その最初のインデックスの文字列をキーとしてマップする次のコードを持っていれば:ベクトルの文字列からベクトルへのインデックスへのアクセス方法

unordered_map<string, vector <vector<string>>> my_map; 
vector<string> vec1 = {"banana", "apple"}; 
vector<string> vec2 = {"banana", "banana"}; 
vector<string> vec3 = {"banana", "pear"}; 

my_map["banana"].push_back(vec1); 
my_map["banana"].push_back(vec2); 
my_map["banana"].push_back(vec3); 

cout << my_map["banana"][0] << my_map["banana"][1] << my_map["banana"][2]; 

unordered_mapのベクトルの特定のインデックスにアクセスするにはどうすればよいですか?私は最後の行でこれをやろうとしましたが、うまくいきません。私も二重括弧の代わりに.at(0)などを使ってみましたが、それもうまくいきませんでした。

答えて

1

my_map["banana"][0]std::vector<std::string>なので、直接出力することはできません。 <<演算子をオーバーロードするか、別のインデックスを指定するだけです。


std::unordered_map<std::string, std::vector<std::vector<std::string>>>があります。各キーにはベクトルのベクトルがあります。

のでmy_map["banana"].push_back(vec1)は、主ベクトルにvec1をプッシュ。あなたはvec1から値にアクセスしたい場合は、2つのインデックスを指定する必要があり、理由:

my_map["banana"][0]      [0] 
     ^^^^^^ ^     ^
     key  vector 0    element 0 in the vector 
       (in main vector)  at position 0 in the main vector 

注:

:これはあなたが"pear"を取得したい場合"banana"
、あなたが使用するを返します。
my_map["banana"] [2]     [1] 
     ^^^^^^^  ^    ^ 
     key   third vector   second element 
         (vec3)    ("pear") 
+0

わかりました。私の愚かな間違い。お手伝いありがとう! – user5482356

関連する問題