1.map插入和删除
功能描述:
map容器进行插入数据和删除数据
函数原型:
1.insert(elem); //在容器中插入元素
2.clear(); //清除所有元素
3.erase(pos); //删除pos迭代器所指的元素,返回下一个元素的迭代器
4 .erase(beg,end);//删除区间[beg,end)的所有元素,返回下一个元素的迭代器
5.erase(key); //删除容器中值为key的元素。
//插入数据的写法
//第一种
m.insert(pair<int, int>(1, 10));
//第二种
m.insert(make_pair(2, 20));
//第三种
m.insert(map<int, int>::value_type(3, 30));
//可以记作:map容器作用域下的值类型(value_type),然后把值写进去就行了
//第四种
m[4] = 40;
//不建议用第4种,如果按照这种方式,key插插错了或不存在的数他会创建一个新的对组出来,然后value=0 例子如下
cout << m[5] << endl;
//虽然[]不建议插入,但是可以用于利用key访问到value 比如
cout << m[4] << endl;//他会打印40
//删除
m.erase(m.begin());
m.erase(3);//只按照key删除,不会按照value的方式删除
//区间方式删除
m.erase(m.begin(), m.end());
总结:
* map插入方式很多,记住其一即可
* 插入 ---insert
* 删除 --- erase
* 清空 --- clear
2.map查找和统计
功能描述:
对map容器进行查找数据以及统计数据
函数原型:
1.find(key); //查找key是否存在,若存在,返回该键的元素的迭代器; 若不存在,返回set.end();
2.count(key);//统计key的元素个数
map<int, int>m;
m.insert(pair<int, int>(1, 10));
m.insert(pair<int, int>(2, 20));
m.insert(pair<int, int>(2, 30));//key值一样插不进去
//查找
map<int, int>::iterator pos = m.find(3);
//统计
//map不允许插入重复key元素,对于count统计而已 结果要么是0要么是1
//multimap的cout统计可能大于1
int num = m.count(3);//统计3这个数的个数
总结:
查找 --find(返回的是迭代器)
统计 --cout(对于map,结果为0或者1) 对于multiset而已可能大于1
3.map容器排序
map容器默认排序规则为 按照key值进行 从小到大排序,掌握如何改变排序规则
主要技术点:
利用仿函数,可以改变排序规则
class MyCompare
{
public:
bool operator() (int vl, int v2)
{
//降序
return vl > v2;
}
};
//创建map容器,排序
map<int, int, MyCompare>m;//MyCompare就是告诉编译器用这个规则进行排序
总结:
* 利用仿函数可以指定map容器的排序规则
* 对于自定义数据类型,map必须要指定排序规则,同set容器
仅个人看视频笔记与理解,如有误可指出谢谢