一、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;