【C++ STL 容器】——映射

news/2024/6/3 18:24:22 标签: c++, 容器, 开发语言

介绍

常用的映射类是map,multimap。在前述的各个容器中,仅保存着一样东西,但是在映射中将会得到两样东西:关键字以及作为对关键字进行查询得到的结果值,即一对值<Key,Value>。map单映射中,Key与Value是一对一的关系;multimap多映射中,Key与Value可以是一对多的关系。

  • map 的 sort 问题:
    Map 中的元素是自动按 key 升序排序,所以不能对 map 用 sort 函数:

常用函数

  • 构造函数
    • map(const Pred& comp=Pred(),const A& al=A()):创建空映射。
    • map(const map& x):复制构造函数。
    • map(const value_type * first,const value_type * last,const Pred& comp=Pred(),const A& al = A()):复制[first,last)之间元素构成新映射。
    • multimap(const Pred& comp=Pred(),const A& al=A()):创建空映射。
    • multimap(const map& x):复制构造函数。
    • multimap(const value_type * first,const value_type * last,const Pred& comp=Pred(),const A& al = A()):复制[first,last)之间元素构成新映射。
  • 大小,判断空函数。
    • int size() const:返回容器元素个数。
    • bool empty() const:判断容器是否空,若返回true, 表明容器
  • 增加,删除函数
    • iterator insert(const value_type& x):插入元素x
    • iterator insert(iterator it,const value_type& x):在迭代指针it处插入元素x。
    • void insert(const value_type * first,const value_type * last):插入[first,last)间元素。
    • iterator erase(iterator it):删除迭代指针it处元素。
    • iterator erase(iterator first,itertor last):删除[first,last)迭代指针间元素。
    • size_type erase(const const Key& key):删除键值等于key的元素。
  • 操作函数
    • const _iterator lower_bound(const Key& key):返回键值大于等于key的迭代器指针,否则返回end():
    • const _iterator upper_bound(const Key& key):返回键值大于等于key的迭代器指针,否则返回end():
    • int count(const Key& key) const:返回容器中键值等于key的元素个数
    • pair<const_iterator ,const_iterator>equal_range(const Key& key) const:返回容器中键值等于key的迭代指针[first,last)
    • const_iterator find(const Key& key) const:返回容器中键值等于key的迭代器指针,如果没找到就返回指向 map 尾部的迭代器。
    • void swap(map & s):交换单映射元素。
    • void swap(multimap& s):交换多映射元素。
  • 特殊函数。
    reference operator[](const Key& t):仅用在单映射map类中,可以以数组的形式给映射添加键值对,并可返回值的引用。
  • 遍历函数
    • iterator begin():返回首元素的迭代器指针。
    • iterator end():返回尾元素后的迭代器指针,而不是尾元素的迭代器指针。
    • reverse_iterator rbegin():返回尾元素的逆向迭代器指针,用于逆向遍历容器
    • reverse_iterator rend(): 返回首元素前的逆向迭代器指针,用于逆向遍历容器

http://www.niftyadmin.cn/n/1038073.html

相关文章

【算法与数据结构】——倍增、ST、RMQ

简介 三种原理倍增、ST、RMQ主要用于解决区间信息维护与查询问题 倍增 倍增&#xff0c;顾名思义就是成倍增加。若问题的状态空间特别大&#xff0c;则一步步递推的算法复杂度太高&#xff0c;可以通过倍增思想&#xff0c;只考察2的整数次幂位置&#xff0c;快速缩小求解范…

【OJ注意点 超时】——cout和scanf

输入输出尽量用printf和scanf&#xff0c;cout和cin虽然方便&#xff0c;但是速度稍慢一点&#xff0c;有时候的题目会被这一点卡时间。 例如POJ3264

【算法与数据结构】——LCA

最近公共祖先LCA 最近公共祖先指有根树中距离两个节点最近的公共祖先。祖先指从当前节点到树根路径上的所有节点。 暴力搜索法 向上标记法 顺着树向上逐步标记&#xff0c;若两节点都标记了同一点&#xff0c;则这一点就是LCA(u,v) 同步前进法 将u&#xff0c;v中较深的节…

编译原理FIRST集、FOLLOW集、SELECT集求法通俗解释 LL(1)文法判定

1.为什么要引入FIRST集的概念&#xff1f; 因为有公共左因子的问题&#xff0c;公共左公因子是指在文法的产生式集合中&#xff0c;某个非终结符的多个候选式具有相同的前缀。一般来说&#xff0c;公共左公因子的产生式为 A→αβ1│αβ2如果有公共左因子的问题&#xff0c;…

【算法与数据结构】——链式前向星

简介 链式前向星在我写的【算法与数据结构】——离散化、拓扑排序以及最短路算法的堆优化这个里面有提到&#xff0c;但是当时描述的比较简单&#xff0c;现在印象有所加深&#xff0c;在详细描述一下。 总的来说链式前向星跟邻接表有些相似&#xff0c;不过邻接表是将与头结点…

小程序 Page/组件生命周期

组件生命周期函数 created :在组件进入页面节点时执行:这个生命周期中不能执行setData attached :在组件进入页面节点时执行 ready :组件布局完成后执行&#xff0c;可以使用SelectorQuery moved :组件节点被移动到页面数另一个位置时执行 detached :组件被移除时执行 Page生命…

Chapter1——递归和迭代

一.递归 1.1 定义 对于递归的规范性定义可以参考维基百科&#xff1a;递归&#xff0c;但是我觉得这个定义对于初学者来说比较晦涩&#xff0c;下面是我在知乎上搜到的一个形象的比喻&#xff1a; 我们使用的词典&#xff0c;本身就是递归&#xff0c;为了解释一个词&#xff…

【语法问题】——堆的运算符重载

用优先队列给结构体排序 由于要用到堆排序就用了个优先队列&#xff0c;priority_queue,给结构体排序&#xff0c;需要给结构体写一个运算符重载&#xff0c;当时格式不知道怎么写写错好几次&#xff0c;趁现在记录一下 struct pv{int x,y;bool operator<(const pv& a…