向未排序的地图添加相同的密钥

时间:2019-12-23 14:28:08

标签: c++ hash hashmap

我有这样的数据;

a - 5
b - 4
c - 3
d - 4
a - 7
b - 3

我这样插入数据以在 C ++ 中进行映射;

unordered_map<string, int> umap;
umap["a"] = 5;
umap["b"] = 4;
umap["c"] = 3;
umap["d"] = 4;
umap["a"] = 7;
umap["b"] = 3;

我想在相同的键中添加值。

预期输出;

a - 12
b - 7
c - 3
d - 4

我该如何执行合并(我不确定这是不是真的单词)操作?

1 个答案:

答案 0 :(得分:3)

诀窍是使用+=而不是=。当您首次使用

在地图上创建对象时
umap["a"]

然后将映射值初始化为零,以便映射包含

{{"a", 0}}

然后umap["a"] += 5会给你

{{"a", 5}}

如果您随后进行了umap["a"] += 7;,则地图将具有

{{"a", 12}}

对所有获得的元素执行此操作:

unordered_map<string, int> umap;
umap["a"] += 5;
umap["b"] += 4;
umap["c"] += 3;
umap["d"] += 4;
umap["a"] += 7;
umap["b"] += 3;

地图将具有

{{"a", 12}, {"b", 7}, {"c", 3}, {"d", 4}}