STL之map映射(C++)

本文详细介绍了C++ STL中的map,包括map的键值对概念、红黑树底层实现、常用方法及其注意事项。并结合具体实例展示了如何在实际问题中运用map解决反片语(Ananagrams)问题。
摘要由CSDN通过智能技术生成

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.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值