• multimap与map一样,都是使用红黑树对记录型的元素数据按元素键值的比较关系,进行快速的插入、删除和检索操作,所不同的是multimap允许插入具有重复性键值的元素。
  • 在multimap容器中,元素的键值与元素的映照数据的映照关系是多对多的,即multimap是多重映照容器。
  • 由于元素键值允许重复,使得数组操作符“[]”利用键值来访问元素没有意义,故而multimap并没有定义数组方式的“[]”操作运算。

multimap与map容器共用同一个c++标准头文件map,因此需要加上头文件#include<map>才能编译运行。

创建multimap对象

  1. multimap(); //创建一个没有任何元素的multimap对象
  2. multimap(constkey_compare& comp); //指定一个比较函数对象comp来创建multimap对象,内存分配器为默认值。
  3. multimap(constmap&); //拷贝构造函数,用一个multimap容器的元素和比较函数,拷贝生成一个新的multimap容器对象。
  4. multimap(InputIteratorfirst, InputIterator last); //用迭代器区间[first)所指的数据,作为multimap容器的元素(包括键值和映照数据),创建一个multimap容器对象。

元素的插入

与map容器一样,multimap容器可使用insert函数,插入元素到容器的红黑树结构中。但不能像map那样,使用数组操作符“[]”进行元素添加。

  1. pair<iterator,bool>insert(const value_type& v)
    将元素v(包括键值和映照数据)插入multimap容器,允许v的键值和容器中的某元素键值重复。返回一个pair配对对象,提供所插入元素的迭代器位置和true/false插入成功标志。
  2. iteratorinsert(iterator position, const value type& v)
    将元素v(包括键值和映照数据)插入multimap容器,参数position只是提示可在position位置之前插入v,所返回的插入位置视情况而定,不一定在position位置前插入。
  3. voidinsert(InputIterator first, InputIterator last)
    将迭代器区间[first,last)所指的数据作为容器元素(包括键值和映照数据),插入到multimap容器中。

元素的删除

  1. void erase(iteratorposition)
    删除 position所指的元素
  2. size_type erase(const key_type& k)
    删除等于键值 k的元素,返回删除的元素个数
  3. void erase(iterator first, iterator last)
    删除map迭代器区间 [first,last)上的所有元素
  4. void clear()删除map容器的所有元素

元素的遍历访问

不同于map容器,multimap容器只能采用迭代器的方式,而不能用数组方式进行遍历。

  1. iterator begin()
  2. iterator end()
  3. reverse_iterator rbegin()
  4. reverse_iterator rend()

其他函数

与map相同。总之,应用起来还是很方便的,后面会对实现源码进行剖析。

转载请注明出处:http://blog.csdn.net/lsh_2013/article/details/46839513

stl之multimap容器相关推荐

  1. C++ map容器和multimap容器(STL map容器)

    目录 1. 关联容器和map容器概述 2. map容器 2.1 map的创建以及初始化列表 2.2 map容器的一般常用属性(方法) 2.3 插入数据 2.4 数据的访问和遍历 2.5 数据的删除 2 ...

  2. STL容器系列文章:multimap容器

    1. 头文件 #include <map> // 和map容器一样 2. 定义 用于存储多个键相同的键值对pair<const K, T>,底层红黑树RB Tree实现,具有自 ...

  3. STL标准库-容器-set与map

    STL标准库-容器-set与multiset C++的set https://www.cnblogs.com/LearningTheLoad/p/7456024.html STL标准库-容器-map和 ...

  4. STL——关联式容器

    一.关联式容器 标准的STL关联式容器分为set(集合)/map(映射表)两大类,以及这两大类的衍生体multiset(多键集合)和 multimap(多键映射表).这些容器的底层机制均以RB-tre ...

  5. 【C++】【第六篇-2】【黑马 p215~p242】【list容器】【set/multiset容器】【map/multimap容器】【函数对象】【谓词】【内建函数对象】

    [C++][第六篇-2][黑马 p215~p242][list容器][set/multiset容器][map/multimap容器][函数对象][谓词][内建函数对象] 3.7 list容器(p215 ...

  6. multimap 容器

    multimap 容器具有和 map 相同的特性,即 multimap 容器也用于存储 pair<const K, T> 类型的键值对(其中 K 表示键的类型,T 表示值的类型),其中各个 ...

  7. 【C++ STL学习笔记】C++ STL序列式容器(array,vector,deque,list)

    文章目录 C++ STL容器是什么? 迭代器是什么,C++ STL迭代器(iterator)用法详解 迭代器类别 迭代器的定义方式 C++序列式容器(STL序列式容器)是什么 容器中常见的函数成员 C ...

  8. STL关联式容器详解

    STL关联式容器类别 1. map 定义在 头文件中,使用该容器存储的数据,其各个元素的键必须是唯一的(即不能重复),该容器会根据各元素键的大小,默认进行升序排序(调用 std::less). 2. ...

  9. STL中基本容器有: string、vector、list、deque、set、map

    为什么80%的码农都做不了架构师?>>>    在STL中基本容器有: string.vector.list.deque.set.map set 和map都是无序的保存元素,只能通过 ...

最新文章

  1. [机器学习] 推荐系统之协同过滤算法(转)
  2. 东大18春计算机基础在线作业,东大18春学期《计算机基础》在线作业123满分答案...
  3. excel自动调整列宽_Excel双击鼠标的9种用法
  4. 如何定时备份远程mysql数据库
  5. 机器学习建模商务合作
  6. 计算机网络知识点整理
  7. 计算机网络 自顶向下方法 第四章 网络层
  8. 理发店收银系统php,理发店收银系统优缺点
  9. 线性同余法生成随机数
  10. python sorted方法
  11. excel软件做折线图
  12. c语言逻辑运算符两侧运算对象,逻辑运算符两侧运算对象的数据类型是什么?...
  13. 学微积,用手机,人人“知识共享”学真知
  14. 关于layer.open()弹出页面与”父页面“之间获取数据赋值给页面Element的问题
  15. (附源码)计算机毕业设计SSM基于的校园卡管理系统
  16. On the contrary...
  17. in和exists的区别
  18. Java web 服务器 搭建_搭建一个java web服务端
  19. 微信接口开发申请服务器,开发微信服务器接口的实例教程
  20. Opera 使用迅雷下载

热门文章

  1. javascript鼠标滚轮滚动实现模块的伸缩功能
  2. C++ STL 字符串转其他类型 其他类型转字符串
  3. python机器学习案例系列教程——文档分类器,朴素贝叶斯分类器,费舍尔分类器
  4. quartus仿真30:D触发器构成的可重复序列111探测器
  5. JavaScript中调皮的undefined
  6. Ubuntu vi命令
  7. LeetCode——Maximum Depth of Binary Tree
  8. WebService实现文件上传下载
  9. 几种JS倒计时代码 【转】
  10. 禁止minigui 3.0的屏幕保护