map容器:
map中的所有元素都是pair;
pair中的第一个元素为key(键值),第二个元素为value
所有元素都会根据元素的键值自动排序
map和multimap是关联式容器,底层结构为二叉树
可以根据键值快速找到value值
map和multimap的区别:
map不允许有重复的key值
multimap允许有重复的key值元素
1.构造函数和赋值
| map(T1,T2)mp | 默认构造函数 | 
| map(const map&mp) | 拷贝构造 | 
| map&operator=(const map &p) | 重载等号 | 
代码实现:
添加数据有多种方法:
常用的有
1.pair<T1,T2>(elem1,elem2)
2.数组 map[n]=m;
3.map<T1.T2>::value_type(elem1,elem2)
void text()
{
	//创建一个map容器
	map<int, int>mp;
	//添加数据
	//1.匿名函数
	mp.insert(pair<int, int>(1, 50));
	//2.用 value_type
	mp.insert(map<int,int>::value_type(2, 60));
	//3.用数组方式
	mp[3] = 80;
	mp[4] = 40;
	for (map<int, int>::iterator it = mp.begin(); it!= mp.end(); it++)
	{
		//输出方式
		cout << (*it).first << "  " << (*it).second << endl;
		//cout<<it->frist<<"  "<<it->second<<endl;
	}
}
2.插入和删除
| insert(elem) | 插入elem | 
| clear() | 清空 | 
| erase(pos) | 删除pos迭代器所指的元素,返回下一个元素迭代器 | 
| erase(beg,end) | 删除区间的所有元素,返回下一个元素迭代器 | 
| erase(key) | 删除容器中值为key的元素 | 
3.大小和交换
| size() | 元素个数 | 
| empty() | 判空 | 
| swap() | 交换 | 
4.查找和统计
| find(key) | 查找key,存在返回元素迭代器,不存在返回map.end() | 
| count(key) | 统计个数 | 
5.排序 利用仿函数
//仿函数
class person {
public:
	bool operator()(int a, int b)
	{
		return a > b;
	}
};
void text()
{
	//创建一个map容器
	map<int, int,person>mp;
	mp[1] = 20;
	mp[2] = 20;
	mp[3] = 80;
	mp[4] = 40;
	mp[5] = 20;
	for (map<int, int>::iterator it = mp.begin(); it != mp.end(); it++)
	{
		cout << it->first << "  " << it->second<< endl;
	}
}









