C++:map.insert插入重复键(已存在键)将忽略,而非值覆盖
测试代码:
#include <iostream>
#include <map>
using namespace std;
int main() {
map<int, int> mymap;
int i = 0;
for (; i < 10; i++) {
mymap.insert(pair<int, int>(1280, i));
}
map<int, int>::iterator it = mymap.begin();
while (it != mymap.end()) {
cout << it->first << endl;
cout << it->second << endl;
it++;
}
return 0;
}
编译 & 运行:
$ g++ -o main main.C
$ ./main
1280
0
输出的值是0,而非9,说明每次map.insert,相同键的值将被忽略,而不是覆盖。
#include <iostream>
#include <map>
using namespace std;
int main() {
map<int, int> mymap;
int i = 0;
for (; i < 10; i++) {
mymap.insert(make_pair(1280, i));
}
map<int, int>::iterator it = mymap.begin();
while (it != mymap.end()) {
cout << it->first << endl;
cout << it->second << endl;
it++;
}
return 0;
}
同上。
map.insert(pair(…))
map.insert(make_pair(…))
参考:
1.https://blog.youkuaiyun.com/qc530167365/article/details/91371603
2.https://www.cnblogs.com/tianzeng/p/9017148.html

本文通过测试代码详细解析了C++中map.insert函数的行为,特别是当尝试插入重复键时,map不会覆盖原有值而是忽略新插入的键值对,这与某些开发者预期的覆盖行为不同。文章提供了具体的代码示例并解释了这一行为背后的原理。
2万+

被折叠的 条评论
为什么被折叠?



