2016-03-19 26 views
-2

3 vektörü bir unordered_map dosyasında değerler olarak saklayan aşağıdaki kodlara sahipse ve bunlara anahtar olarak ilk dizindeki dize ile eşler:Dizgeden vektörlere bir haritadaki bir vektördeki bir dizine nasıl erişilir

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'in vektörünün belirli dizinlerine nasıl erişebilirim? Bunu son satırda yapmaya çalıştım ama işe yaramıyor. Ayrıca .AT kullanarak denedi (0), vs yerine çift parantez ama bu da işe yaramadı.

cevap

1

my_map["banana"][0] bir std::vector<std::string>, yani doğrudan o çıkış yapamaz. Sen << operatörünü aşırı veya sadece başka bir dizin belirtebilirsiniz.


Her tuş vektörlerin bir vektör olan bir std::unordered_map<std::string, std::vector<std::vector<std::string>>> var.

Yani my_map["banana"].push_back(vec1) ana vektöre vec1 iter.

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

Not: Eğer vec1 değerleri erişmek istiyorsanız, çünkü 2 indeksleri belirtmek zorunda Eğer "pear" olsun istiyorsanız bu "banana"


dönecektir, istersek:

my_map["banana"] [2]     [1] 
     ^^^^^^^  ^    ^ 
     key   third vector   second element 
         (vec3)    ("pear") 
+0

anladım. Benim için aptalca hata. Yardım için teşekkürler! – user5482356