基本概念
每个元素都是pair二元组,第一个元素做key起到索引作用,第二个元素为值value,插入时会按key自动排序,本质是关联型容器,底层是用二叉树实现,优点可以通过key找到value值
map,multimap的区别和set,multiset的一样,map是去重的,不可以插入重复的key值,而multimap是可以的
构造和赋值

如上,提供了默认构造和拷贝构造,以及=重载赋值,当然我们要导入头文件map

如上,我们提前使用了插入Insert,注意这里不是插入一个数值,而是插入pair对组,我们要使用pair的有参构造,如上,实现了插入输出
大小和交换

如上,方法size获得元素数量,empty还是返回是否为空,swap用于交换2个map对象

就是单纯的调用方法,没什么说的
插入和删除

如上,方法和set类似,没什么说的,对于multimap可以删除重复的key

如上,我们这里给展示下map对象的几种插值方法,第一种肯定见过了,make_pair也很常用,而第三种写的比较长不怎么用,第四种很像python字典使用吧,但是一般不建议使用,因为如果访问了不存在的键,会给添加元素,设置默认值value,除非我们确定key在map里,我们才使用其去访问

如上,我们只是想访问5,但是5不存在key内,map会给其插入,设定默认值
查找和统计

如上,2个方法,find返回的是迭代器,如果不存在,返回的是end位置,count返回int统计key的个数,对于map当然就是0,1,对于mulitset就是统计所有相同key的值

如上,我们先调用查找,通过find返回的迭代器和end比较是否相等来判断是否在m的key里

对于map而言,不允许重复插入相同key值,所以后面的20未生效
排序
我们知道set容器可以指定插入排序规则,map容器默认按照key大小进行排序,我们仍可以使用仿函数修改规则,

如上,没什么说的,需要注意的是构造使用了仿函数参数,迭代器记得也要加上
网友评论