因此,可以說,我宣佈一個unordered_map是這樣的:如何存儲/在地圖C++相同的密鑰接入多個值
unordered_map<string, vector<string>> my_map;
而且我有值的列表我想它來存儲這樣的:
vector<string> vec1 = {"banana", "apple"};
vector<string> vec2 = {"banana", "banana"};
vector<string> vec3 = {"banana", "watermelon"};
如果我去通過,並初始化每個矢量地圖,使用字符串中的第0個指標爲重點,像這樣:
my_map[vec1[0]] = vec1;
my_map[vec2[0]] = vec2;
my_map[vec3[0]] = vec3;
儘管unordered_map具有相同的訪問密鑰,但它們是否將存儲全部三個矢量?如果我想訪問每個矢量,有沒有辦法按照它們出現在上面的列表中的順序進行操作?
因此,舉例來說,如果我這樣做:
vector<string> output1;
vector<string> output2;
vector<string> output3;
output1 = my_map["banana"];
output2 = my_map["banana"];
output3 = my_map["banana"];
該載體將被分配到輸出1,輸出2和輸出3?我很確定這對所有人來說都是一樣的矢量,但unordered_map如何決定哪一個?我怎樣才能讓vec1分配給output1,vec2分配給output2等等?
@Anton_Savin感謝您的回覆。我需要暫時避免使用multimaps,而是尋求一種方法來繞過正常的unordered_map上的這個問題。保持一個int計數器變量是否合理,我會爲unordered_map的每次添加增加一個int計數器變量,然後將計數器添加到其鍵值字符串中,如下所示:string fruit;水果+ =水果+計數器; my_map [fruit] = vec2; ? – user5482356
@ user5482356:如果顯然愚蠢的「需要避免」的要求是你的老師的話,那麼一個好的方法就是實現多圖的額外功能。這並不難。 –