map 是一种关联容器, 提供一对一的关联, 关联的形式为: KEY----VALUE(键值对),另外关键字不能重复。
map 也可看做是 关键字映射的集合, 即,map中不可出现重复的关键字,每条映射的关键字都是不同的。
1.map基本用法
#include<iostream>
#include<map>
using namespace std;
int main()
{
map<string,int> mymap;
map<string,int>::iterator it;
mymap["China"] = 100;
mymap["English"] = 200;
mymap["America"] = 300;
for(it=mymap.begin();it!=mymap.end();++it)
cout<<(*it).first<<":"<<(*it).second<<endl;
return 0;
}
//输出结果为
America:300
China:100
English:200
//注:默认情况下,键值对是按键首字母的ascll大小,升序排列
注:以下是关于如何排序map键值对
<font color=‘blue’,size=‘5’>map的按Key排序和按Value排序详解
2.count(x)用于判断某一键是否存在
注:如果mymap的key中有x,则函数返回1,否则返回0.
#include<iostream>
#include<map>
#include<string>
#include<vector>
#include<iomanip>
using namespace std;
int main()
{
map<string, int> mymap;
map<string, int>::iterator it;
mymap["China"] = 100;
mymap["English"] = 200;
mymap["America"] = 300;
if (mymap.count("China"))
cout << "exist" << endl;
else
cout << "No exist" << endl;
system("pause");
return 0;
}
//输出结果为
exist
3.另外还有一些函数
C++ Maps是一种关联式容器,包含“关键字/值”对
begin() 返回指向map头部的迭代器
clear() 删除所有元素
count() 返回指定元素出现的次数
empty() 如果map为空则返回true
end() 返回指向map末尾的迭代器
equal_range() 返回特殊条目的迭代器对
erase() 删除一个元素
find() 查找一个元素
get_allocator() 返回map的配置器
insert() 插入元素
key_comp() 返回比较元素key的函数
lower_bound() 返回键值>=给定元素的第一个位置
max_size() 返回可以容纳的最大元素个数
rbegin() 返回一个指向map尾部的逆向迭代器
rend() 返回一个指向map头部的逆向迭代器
size() 返回map中元素的个数
swap() 交换两个map
upper_bound() 返回键值>给定元素的第一个位置
value_comp() 返回比较元素value的函数
4.遍历
#include<iostream>
#include<map>
#include<string>
#include<vector>
#include<iomanip>
using namespace std;
int main()
{
map<string, int> mymap;
map<string, int>::iterator it1;
map<string, int>::reverse_iterator it2;
mymap["China"] = 100;
mymap["English"] = 200;
mymap["America"] = 300;
//正向遍历
for (it1 = mymap.begin(); it1 != mymap.end(); ++it1)
cout << it1->first << ":" << it1->second << endl;
cout << endl<<endl;
//反向遍历
for(it2=mymap.rbegin();it2!=mymap.rend();++it2)
cout << it2->first << ":" << it2->second << endl;
system("pause");
return 0;
}
//输出结果为
America:300
China:100
English:200
English:200
China:100
America:300