【发布时间】:2016-03-19 03:06:30
【问题描述】:
假设我这样声明一个 unordered_map:
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,等等?
【问题讨论】:
标签: c++ vector unordered-map