文章目录
六,map容器
1,简述
其实map容器和set容器本质差不多,都是二叉排序树,而且multmap和map的关系也和set和multset的关系差不多,都是允许重复元素和不允许重复元素的相同逻辑的容器。
而map和set最大的区别是map存入的是一个有序对,即pair<first,second>,所有的输入和输出的数据都是pair格式的,set就是map。
不过map还是有一定和set的区别,当然,大多都是接口的区别,由于pair的特殊特性,map提供了一些set不存在的接口。
而且map建立时,传入的参数是两个参数,分别是pair的头和尾。
class map(int){
set<pair<int,int>>m;
}
map<int,int>M;
2,find查找
虽热map是pair格式的set,但是就find函数来说,map不用传入pair格式的数据就能查找到值。
虽然find的本质也很简单,就是在set中找到first值与查找的值相等的迭代器,但是使用方法还是和set的使用方法有所区别。
3,at位于
和set不一样,因为pair本质是一个数据结构,所以有自己独有的比较准则。
map以first作为整个pair的值,来对pair作为排序的依据,根据这个性质,我们也可以将map使用在一些两个数值排序的问题上。
因为支持at,map可以提供M[]的方法来访问,也可以通过M[i]=j这种方式往map里面插入值。插入时,i为first,j为second,然后调用insert函数。
int at(int j){
return *S.find(j);
}
4,后记
map容器之所以叫map,因为如果我们定义时,可以将两个节点都设定为int,这样就