("a",cnt));
cnt++;
for(auto it = m_str2id.begin(); it != m_str2id.end(); it++) {
printf("%s : %d\n", it->first.c_str(), it->second);
输出:a : 0
key为a的pair插入第一组 [a,0]后, 再插入 [a,1],会
忽略,而不是替换
。
如果想要替换,需判断是否存在,erase然后再insert。
map的insert方法会忽略重复key,而不是替换int cnt = 0;map<string,int> m_str2id;for(int i=0; i<5; i++) { m_str2id.insert(pair<string,int>("a",cnt)); cnt++;}for(auto it = m_str2id.begin()...
很早之前看过
map
的用法,大致会用,后来学了数据结构,我告诉自己,会
map
了,,,某场面试,面试官的一个
问题
,让我emm…,anyway,既然有不足,就查缺补漏~
1.
问题
:当
map
插入
数据时,如果
key
值
相同,value
值
是覆盖么?
答:如果
key
在
map
里面有的话,不会覆盖之前的value,一般先判断之前有没有数据(见4.),有的话,先删除,再去添加。还有一种方法,可以通过value =
map
[
key
],利用[]=来实现覆盖,进行数据的更新。
2.代码:
#include <iostream&g
一、
插入
相同键元素操作
(1)
insert
方法
在
map
中的键必须是唯一的,当想
map
中连续
插入
键相同但
值
不同的元素时,编译和运行时都不会发生任何错误,系统会忽略后面的对已存在的键的
插入
操作,如
1
map
<int,int> m1;
2 m1.
insert
(make_pair(1,2));
3 m1.
insert
(make_pair(1,3));
4 for(
map
&l...
C++
STL库学习--
map
容器简介一、
map
容器创建及
插入
二、
map
容器的大小\统计\查找1.empty2.count3.find三、
map
容器的交换四、
map
容器的删除
map
中的所有元素都是pair,第一个元素为键,第二个元素为
值
,所有元素都会根据元素的键
值
自动排序。优点是可以快速找到value。
map
不允许容器中有
重复
的
key
值
元素,multi
map
容器中允许有
重复
的
key
值
元素。
引入头文件:
#include <
map
>
一、
map
容器创建及
插入
在
C++
的`std::
map
`容器中,当我们使用`
insert
`函数
插入
一个已经存在的键时,会发生什么取决于`
map
`的性质。`std::
map
`是一个关联容器,它按照键的顺序进行排序,并且每个键必须是唯一的。
如果使用`
insert
`函数
插入
一个已经存在的键,新的
值
将不会替换旧的
值
。相反,`
insert
`函数将返回一个`std::pair`对象,该对象的第一个成员指向已经存在的元素,并且第二个成员表示
插入
是否成功。
下面是一个示例代码,演示了这种情况:
```cpp
#include <iostream>
#include <
map
>
int main() {
std::
map
<int, std::string> my
Map
;
my
Map
.
insert
(std::make_pair(1, "One"));
my
Map
.
insert
(std::make_pair(2, "Two"));
auto result = my
Map
.
insert
(std::make_pair(1, "New One"));
if (result.second) {
std::cout << "
Insert
ion succeeded." << std::endl;
} else {
std::cout << "
Insert
ion failed.
Key
already exists." << std::endl;
std::cout << "Existing value: " << result.first->second << std::endl;
return 0;
在上述代码中,我们首先
插入
了键
值
对`(1, "One")`和`(2, "Two")`。然后,我们再次尝试
插入
键
值
对`(1, "New One")`,但是由于键`1`已经存在,
插入
操作将失败。因此,我们在输出中显示了
插入
失败并打印了已存在的
值
。
输出结果为:
Insert
ion failed.
Key
already exists.
Existing value: One
希望这个例子能够帮助你理解当使用`
insert
`函数
插入
重复
键时的行为。如果你还有其他
问题
,请随时提问。