STL中map的使用

STL中map的使用

简介

map 是 STL 的一个关联容器,它提供一对一的数据处理能力。

map 对象是模板类,需要关键字存储对象两个模板参数:其中第一个参数称为关键字,每个关键字只能在 map 中出现一次;第二个参数称为该关键字的值。可以将关键字和存储对象理解为“{键,值}对”。

1
map<int,string> mp;

map的数据插入操作

1
2
3
4
//使用insert函数插入pair数据
mp.insert(pair<int,string>(3,"xingyuanjie"));
//使用数组方式插入数据
mp[2]="wangzhouyang";

说明:上面的两种方法是有区别的,用 insert 函数插入数据,涉及到集合的唯一性这个概念,即当 map 中有这个关键字时,insert 操作是不能实现数据插入的;但是数组方式能够插入数据,插入的数据会覆盖该关键字之前对应的值。

map中数据的遍历

1
2
3
4
map<int,string>::iterator it;					//迭代器
for (it=mp.begin();it!=mp.end();it++) {
cout<<it->first<<" "<<it->second<<endl;
}

map中数据的查找

1
2
3
4
5
6
7
8
map<int,string>::iterator it;					//迭代器
it=mp.find(1);
if(it!=mp.end()){
cout << "Find it, the relative value is: " << it->second << endl;
}
else{
cout << "Can not find the relative value." << endl;
}

map中数据的删除

1
2
3
map<int,string>::iterator it;					//迭代器
it = mp.find(2);
mp.erase(it);

map中数据的排序

map 中的所有元素都会根据元素的键值,自动进行升序排序。

完整操作

程序源代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
#include<bits/stdc++.h>
using namespace std;
map<int,string> mp;
int main()
{
//使用insert函数插入pair数据
mp.insert(pair<int,string>(3,"xingyuanjie"));
mp.insert(pair<int,string>(1,"shicheng"));
mp.insert(pair<int,string>(4,"tanghaipeng"));
mp.insert(pair<int,string>(6,"zhouyuhao"));
mp.insert(pair<int,string>(5,"heqichuan"));
//使用数组方式插入数据
mp[2]="wangzhouyang";
//map的遍历
map<int,string>::iterator it;
for (it=mp.begin();it!=mp.end();it++) {
cout<<it->first<<" "<<it->second<<endl;
}
//查找操作
it=mp.find(1);
if(it!=mp.end()){
cout << "Find it, the relative value is: " << it->second << endl;
}
else {
cout << "Can not find the relative value." << endl;
}
//删除操作
it = mp.find(2);
mp.erase(it);
for (it=mp.begin();it!=mp.end();it++) {
cout<<it->first<<" "<<it->second<<endl;
}
return 0;
}

程序输出:

1
2
3
4
5
6
7
8
9
10
11
12
1 shicheng
2 wangzhouyang
3 xingyuanjie
4 tanghaipeng
5 heqichuan
6 zhouyuhao
Find it, the relative value is: shicheng
1 shicheng
3 xingyuanjie
4 tanghaipeng
5 heqichuan
6 zhouyuhao

参考资料:

(20条消息) STL中map介绍_liitdar的博客-CSDN博客_stlmap


本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!