Yani böyle bir unordered_map bildirmek Diyelim:saklamak için nasıl/harita C++ aynı anahtarın erişim birden çok değerin
unordered_map<string, vector<string>> my_map;
Ve ben böyle içinde saklamak istediğiniz bir değerler listesi var :
vector<string> vec1 = {"banana", "apple"};
vector<string> vec2 = {"banana", "banana"};
vector<string> vec3 = {"banana", "watermelon"};
ben şöyle anahtarı olarak 0 endeksinde dizesini kullanarak, geçmesi ve haritaya her vektör başlatmak eğer:
my_map[vec1[0]] = vec1;
my_map[vec2[0]] = vec2;
my_map[vec3[0]] = vec3;
Unordered_map, aynı erişim anahtarına sahip olmasına rağmen üç vektörü de saklar mı? Ve eğer her bir vektöre erişmek istediysem, yukarıdaki listede göründükleri şekilde aynı şekilde yapabileceğim bir yol var mı?
Yani, örneğin, ben yaptıysa:
vektörler Çıkış1, Çıkış2 ve OUTPUT3 tayin edileceğinivector<string> output1;
vector<string> output2;
vector<string> output3;
output1 = my_map["banana"];
output2 = my_map["banana"];
output3 = my_map["banana"];
? Eminim bu her şey için aynı vektör olurdu ama unordered_map hangisine karar veriyor? Ve nasıl vec1 çıkış1, vec2 çıkış2, vb atanacak nasıl yapabilirim?
@Anton_Savin Cevabınız için teşekkürler. Şu an için multimaps'lardan kaçınmam gerekiyor ve bunun yerine normal unordered_map'ta bu problemi aşmanın bir yolunu arıyorum. Unordered_map'e her ekleme için arttırdığım int karşı değişkeni tutmak mantıklı olur ve sonra sayacı anahtar dizisine şöyle ekler: string fruit; meyve + = meyve + sayacı; my_map [fruit] = vec2; ? – user5482356
@ user5482356: Görünüşe göre aptalca “kaçınmaya ihtiyaç var” şartı sizin öğretmeninizse, ilerlemenin iyi bir yolu, bir multimap'ın ekstra işlevselliğini kendiniz uygulamaktır. Yapması zor değil. –