stl之multimap容器

原创 2015年07月11日 09:48:03
  • 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的使用

  • 2014年07月20日 21:36
  • 28KB
  • 下载

八、STL中的关联容器set/multiset、map/multimap

STL中的关联容器set/multiset、map/multimap

今日学习札记——STL常用容器:vector、list、set和multiset、map和multimap(11.17)

1.vector,头文件#include (1) 声明方法:vector 变量; 范例: int main() {     vector IntArray(3); IntArray[0]...

标准模板库(STL)学习探究之Multimap容器

C++ Multimaps(多映射) C++ Multimaps和maps很相似,但是MultiMaps允许重复的元素。(具体用法请参考map容器) 函数列表: begin() 返回指向第一个元...

STL源码剖析 - 第5章 关联式容器 - multimap

5.6 multimap         multimap的特性及其用法和map完全相同,唯一的区别就是multimap允许键值key重复,因此multimap的插入操作采用的是底层RB-Tree的...

【深度探索STL】关联式容器map和multimap

map与multimap的区别等同于set 与multiset的区别。 一、map map

STL 之 multimap 多重映照容器

multimap 介绍 与 map 不同,multimap支持键值重复插入,并且没有定义数组"[]"操作运算 multimap 使用和方法 1. 创建 multimap 对象 (1) mu...

[C++ 从入门到放弃-06]C++STL之multimap多重映照容器

在[C++ 从入门到放弃-05 ]C++STL之map映照容器 中指出map不允许插入的元素键值相同。而本文要说明的multimap是允许插入重复的键值的。所以multimap与map是十分相似的。但...

STL容器之map/multimap

.

【学习笔记】《STL使用入门教程》第五讲:容器map、multimap

容器map、multimap的使用方法
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:stl之multimap容器
举报原因:
原因补充:

(最多只允许输入30个字)