Map

Map是STL的一个关联容器,它提供一对一(其中第一个可以称为关键字Key,每个关键字只能在map中出现一次,第二个可能称为该关键字的值Value)的数据处理能力,由于这个特性,它完成有可能在我们处理一对一数据的时候,在编程上提供快速通道。map内部自建一颗红黑树(一种非严格意义上的平衡二叉树),这颗树具有对数据自动排序的功能,所以在map内部所有的数据都是有序的。

Map最基本的构造函数;

似乎就只有这六种:

1
2
3
map<string , int >mapstring; map<int ,string >mapint;
map<sring, char>mapstring; map< char ,string>mapchar;
map<char ,int>mapchar; map<int ,char >mapint;

Map基本操作

代码 描述
begin() 返回指向map头部的迭代器
clear() 删除所有元素
count() 返回指定元素出现的次数
empty() 如果map为空则返回true
end() 返回指向map末尾的迭代器
erase() 删除一个元素
find() 查找一个元素
insert() 插入元素
lower_bound() 返回键值>=给定元素的第一个位置
upper_bound() 返回键值>给定元素的第一个位置
max_size() 返回可以容纳的最大元素个数
size() 返回map中元素的个数
swap() 交换两个map
key_comp() 返回比较元素key的函数
value_comp() 返回比较元素value的函数

示例代码

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
35
36
#include <iostream>
#include <algorithm>
#include <cstring>
#include <map>
using namespace std;
int main()
{
map <int,string> mp,mp2;
//插入
mp.insert(pair<int , string>(1,"James"));
mp.insert(pair<int , string>(5,"Pop"));
mp.insert(pair<int , string>(4,"Lee"));
mp.insert(pair<int , string>(6,"Jack"));
mp.insert(map<int,string>::value_type(2,"Beyond"));
mp[3]="Tom";
//mp2
mp2.insert(pair<int , string>(1,"Changed"));
//查找
map<int ,string>::iterator iter;
iter=mp.find(2);
if(iter!=mp.end())
cout<<"找到了key=2的元素,value="<<(*iter).second<<endl;
//删除
iter=mp.find(4);
if(iter!=mp.end())
mp.erase(iter);
for(iter=mp.begin();iter!=mp.end();iter++)
cout<<" "<<(*iter).first<<" "<<(*iter).second<<endl;
mp.swap(mp2);
cout<<"changing"<<endl;
for(iter=mp.begin();iter!=mp.end();iter++)
cout<<" "<<(*iter).first<<" "<<(*iter).second<<endl;
return 0;
}

图示

Vector使用图示