stl之multimap容器
2015-07-11 09:48
260 查看
multimap与map一样,都是使用红黑树对记录型的元素数据按元素键值的比较关系,进行快速的插入、删除和检索操作,所不同的是multimap允许插入具有重复性键值的元素。
在multimap容器中,元素的键值与元素的映照数据的映照关系是多对多的,即multimap是多重映照容器。
由于元素键值允许重复,使得数组操作符“[]”利用键值来访问元素没有意义,故而multimap并没有定义数组方式的“[]”操作运算。
multimap与map容器共用同一个c++标准头文件map,因此需要加上头文件
multimap(constkey_compare& comp); //指定一个比较函数对象comp来创建multimap对象,内存分配器为默认值。
multimap(constmap&); //拷贝构造函数,用一个multimap容器的元素和比较函数,拷贝生成一个新的multimap容器对象。
multimap(InputIteratorfirst, InputIterator last); //用迭代器区间[first)所指的数据,作为multimap容器的元素(包括键值和映照数据),创建一个multimap容器对象。
将元素v(包括键值和映照数据)插入multimap容器,允许v的键值和容器中的某元素键值重复。返回一个pair配对对象,提供所插入元素的迭代器位置和true/false插入成功标志。
将元素v(包括键值和映照数据)插入multimap容器,参数position只是提示可在position位置之前插入v,所返回的插入位置视情况而定,不一定在position位置前插入。
将迭代器区间[first,last)所指的数据作为容器元素(包括键值和映照数据),插入到multimap容器中。
删除 position所指的元素
删除等于键值 k的元素,返回删除的元素个数
删除map迭代器区间 [first,last)上的所有元素
iterator begin()
iterator end()
reverse_iterator rbegin()
reverse_iterator rend()
转载请注明出处:http://blog.csdn.net/lsh_2013/article/details/46839513
在multimap容器中,元素的键值与元素的映照数据的映照关系是多对多的,即multimap是多重映照容器。
由于元素键值允许重复,使得数组操作符“[]”利用键值来访问元素没有意义,故而multimap并没有定义数组方式的“[]”操作运算。
multimap与map容器共用同一个c++标准头文件map,因此需要加上头文件
#include<map>才能编译运行。
创建multimap对象
multimap(); //创建一个没有任何元素的multimap对象multimap(constkey_compare& comp); //指定一个比较函数对象comp来创建multimap对象,内存分配器为默认值。
multimap(constmap&); //拷贝构造函数,用一个multimap容器的元素和比较函数,拷贝生成一个新的multimap容器对象。
multimap(InputIteratorfirst, InputIterator last); //用迭代器区间[first)所指的数据,作为multimap容器的元素(包括键值和映照数据),创建一个multimap容器对象。
元素的插入
与map容器一样,multimap容器可使用insert函数,插入元素到容器的红黑树结构中。但不能像map那样,使用数组操作符“[]”进行元素添加。pair<iterator,bool>insert(const value_type& v)
将元素v(包括键值和映照数据)插入multimap容器,允许v的键值和容器中的某元素键值重复。返回一个pair配对对象,提供所插入元素的迭代器位置和true/false插入成功标志。
iteratorinsert(iterator position, const value type& v)
将元素v(包括键值和映照数据)插入multimap容器,参数position只是提示可在position位置之前插入v,所返回的插入位置视情况而定,不一定在position位置前插入。
voidinsert(InputIterator first, InputIterator last)
将迭代器区间[first,last)所指的数据作为容器元素(包括键值和映照数据),插入到multimap容器中。
元素的删除
void erase(iteratorposition)
删除 position所指的元素
size_type erase(const key_type& k)
删除等于键值 k的元素,返回删除的元素个数
void erase(iterator first, iterator last)
删除map迭代器区间 [first,last)上的所有元素
void clear()删除map容器的所有元素
元素的遍历访问
不同于map容器,multimap容器只能采用迭代器的方式,而不能用数组方式进行遍历。iterator begin()
iterator end()
reverse_iterator rbegin()
reverse_iterator rend()
其他函数
与map相同。总之,应用起来还是很方便的,后面会对实现源码进行剖析。转载请注明出处:http://blog.csdn.net/lsh_2013/article/details/46839513
相关文章推荐
- 浅析STL中的常用算法
- STL区间成员函数及区间算法总结
- c++ STL容器总结之:vertor与list的应用
- C++在成员函数中使用STL的find_if函数实例
- 关于STL中list容器的一些总结
- 关于STL中的map容器的一些总结
- 浅析stl序列容器(map和set)的仿函数排序
- STL list链表的用法详细解析
- stl容器set,map,vector之erase用法与返回值详细解析
- STl中的排序算法详细解析
- 关于STL中vector容器的一些总结
- 关于STL中set容器的一些总结
- 简单说说STL的内存管理
- CppUtest发现的STL容器内存泄漏问题
- STL中算法
- STL简单应用
- vector-list-deque
- 三十分钟掌握STL
- 1.sort()
- 刚刚接触到一个STL的函数make_pair()