文章目录
1、map 是一个键值对
就是从键(key)到值(value)的映射,比如⼀个人名对应⼀个学号,map 将(key / value)当做元素,它可以根据 key 从小到大的排序准则自动将元素排序,且map的元素唯一。使用 map 前,须先声明其头文件 #include <map>
,
(1)有关 key / value
map 的元素类型,要满足以下条件:
(i)key / value必须具备可赋值性和可复制性;
(ii)对于排序准则而言,key 必须是可比较的
(3)底层实现——红黑树
和 set 集合一样,map 的数据结构也是平衡二叉树;map 可以视作关联式数组运用,根据 key 对元素的排序,在利用 key 查找元素时就会很快。但是,不可以直接改变元素的 key。
2、map 的常用方法
map c; //产生一个空的 map;不含任何元素
map c1(c) //产生 map 的一个副本,所有元素均被复制
c.size() //返回容器的大小
c.empty() //判断容器的大小是否为零,等同于 size() == 0, 但可能更快
c.max_size() //返回可容纳的最大元素数量
c.begin() //返回一个双向迭代器(key 被视为常数),指向第一个元素
c.end() // 返回一个双向迭代器(key 被视为常数),指向最后元素的下一个位置
c.rbegin() //返回一个逆向迭代器,指向逆向遍历时的第一个元素
c.rend() //返回一个逆向迭代器,指向逆向遍历时的最后元素的下一个位置
c.insert(elern) //安插一份elem副本。返回新元素位置(不论是杏成功一对maps 而言)
c.insert(pos,elem) //安插一份e1em副本,返回新元素位置(pos是个提示,指出安插操作的搜寻起点。如果提示恰当,可大大加快速度)
c.insert(beg, end) //将区间[beg;end]内所有元素的副本安插到c(无返回值)
c.find(key) //搜寻拥有某个 key 的第一个元素,返回一个迭代器,指向该元素的位置,如果没找到则返回end()
c.count(key) //查找 map 中某个键值出现的次数
c.erase(iterator) //移除定位器iterator指向的值,无返回值
c.erase(first,second) //移除定位器first和second之间的值,无返回值
c.erase(elem) //移除"实值(value)与 elem 相等"的所有元素,返回被移除的元素个数
c.