一、map的基本概念

map中所有的元素都是pair,即"key-value",key起到索引的作用,value是实值。key和value通过一个映射关系来建立联系,比如在数组中查找所有元素出现的个数,此时元素就是key,而value可以定义为元素的个数,通过对数组进行遍历之后就能对元素进行计数;

map中所有的元素都会根据元素的key值进行排序,即使在建立时没有顺序;

map中不允许有重复的key值,而multimap则允许容器中有重复的key值元素。

二、map容器的构造和赋值

map<T1, T2> dp; // map的默认构造函数
map(const map &dp); // map的拷贝构造函数
map& operator=(consst map &dp); // 重载等号运算符进行赋值

三、map容器的增删改查

/*********************增加元素***********************/
dp.insert(pair<T1, T2>(key, value));	//在容器内插入元素,elem是一个"key-value"组
dp.insert(make_pair(key, value));		//使用make_pair的方式构建 "key-value" 组
dp[key] = value;	//直接使用赋值的方法进行插入

/*********************删除元素***********************/
clear();			    //清除所有元素
erase(iterator pos);	//删除pos迭代器所指向的元素,返回下一个元素的迭代器
erase(iterator start, iterator end);	//删除[begin, end)的所有元素,返回下一个元素的迭代器
erase(key);	//删除容器中值为key的元素

/*********************访问元素***********************/
for(auto i:dp)	
    // 增强型for循环,直接访问dp中的元素。由于每个元素成对出现因此使用"first-sencond"表示"key-value"
	cout << i.first << ":" << i.second << endl; 
for(auto it=dp.begin(); it!=dp.end(); it++)
    // 典型型for循环,使用auto推理出it是map的迭代器
	cout << it->first << ":" << it->second << endl;