为什么不为同一个键更新c ++映射值?

问题描述 投票:1回答:4

这是我的代码:

map <pair<int,int> ,string> m; 
m.insert(make_pair(1,2),"imtiaz");//making key value pair
m.insert(make_pair(8,3),"moin");
m.insert(make_pair(1,2),"izm");

cout<<m[make_pari(1,2)]<<endl; //print value for key 1,2

output:
imtiaz

[我们知道如果我们在地图中为现有键插入一个值,它将更新该值。对于相同的键(1,2),我插入了两个值“ imtiaz”和“ izm”。因此,最新值“ izm”应该在这里打印。这是怎么了?

c++ stl
4个回答
6
投票
insert的预期行为是不覆盖映射中的现有条目。

5
投票
insert_or_assign不会修改地图中已经存在的元素。而是插入新元素。返回类型允许检查插入是否成功(即,尚无具有相同键的元素)。

1
投票
std :: map :: insert不会更新现有元素。您可以使用insert_or_assign或运算符[]。

1
投票
operator[]的签名(您使用的签名)是这样的:
© www.soinside.com 2019 - 2024. All rights reserved.