multimap的介绍及使用multimap 的介绍及使用 1 multimap 的介绍 1 multimap 是关联式容器 它按特定的次序 按照 key 来比较 存储由键 key 和值 value 组合而成的元素 多个键值对之间的 key 可以重复 2 在 multimap 中 键值 key 通常用于排序和唯一标识元素 值 value 中存储与键 key 关联的内容
大家好,我是讯享网,很高兴认识大家。
multimap的介绍及使用
1、multimap的介绍
1、multimap是关联式容器,它按特定的次序(按照key来比较)存储由键key和值value组合而成的元素,多个键值对之间的key可以重复
2、在multimap中,键值key通常用于排序和唯一标识元素,值value中存储与键key关联的内容。
3、multimap按照指定的严格弱排序对key进行排序
4、multimap中通过键值访问单个元素比unordered_multimap容器慢,使用迭代器直接遍历multimap的元素可以得到关于key有序的序列
5、multimap的底层通常是平衡二叉搜索树(红黑树)
6、multimap和map的唯一区别是multimap中的key可以重复,而map的key是唯一的

讯享网
2、multimap的构造
| 函数声明 |
功能简介 |
| explicit multimap (const key_compare& comp =key_compare(), const allocator_type& alloc = allocator_type()); |
构造一个空的multimap |
| template multimap (InputIterator first, InputIterator last,const key_compare& comp = key_compare(), const allocator_type& alloc = allocator_type()); |
用[first,last)区间中的元素构造multimap |
| multimap (const multimap& x); |
multimap的拷贝构造 |
3、multimap的迭代器
| 函数声明 |
功能简介 |
| iterator begin () |
返回第一个元素的位置 |
| iterator end () |
返回最后一个元素的下一个位置 |
| const_iterator begin () const |
返回第一个元素的const迭代器 |
| const_iterator end () const |
返回最后一个元素下一个位置的const迭代器 |
| reverse_iterator rbegin() |
返回第一个元素位置的反向迭代器即rend |
| reverse_iterator rend() |
返回最后一个元素下一个位置的反向迭代器即rbegin |
| const_reverse_iterator rbegin()const |
返回第一个元素位置的const反向迭代器即rend |
| const_reverse_iterator rend() const |
返回最后一元素下一个位置的反向迭代器即rbegin |
4、multimap的元素访问
| 函数声明 |
功能简介 |
| bool empty ( ) const |
检测multimap中的元素是否为空,是返回true,否则返回false |
| size_type size() const |
返回multimap中有效元素的个数 |
| iterator insert (const value_type& val) |
在multimap中插入键值对x,注意x是一个键值对,返回值也是键值对:iterator代表新插入元素的位置,bool代表释放插入成功 |
| iterator insert (iterator position, const value_type& val); |
在position位置插入值为x的键值对,返回该键值对在multimap中的位置,注意:元素不一定必须插在position位置,该位置只是一个参考 |
| template void insert (InputIterator first, InputIterator last); |
在multimap中插入[first, last)区间中的元素 |
| void erase ( iterator position ) |
删除position位置上的元素 |
| size_type erase ( const key_type& x ) |
删除键值为x的元素 |
| void erase ( iterator first, iterator last ) |
删除[first, last)区间中的元素 |
| void swap (multimap<Key,T,Compare,Allocator>& mp ) |
交换两个multimap中的元素 |
| void clear ( ) |
将multimap中的元素清空 |
| iterator find ( const key_type& x ) |
在multimap中插入key为x的元素,找到返回该元素的位置的迭代器,否则返回end |
| const_iterator find ( const key_type& x ) const |
在multimap中插入key为x的元素,找到返回该元素的位置的const迭代器,否则返回cend |
| size_type count ( const key_type&x ) const |
返回key为x的键值在multimap中的个数,注意multimap中key是唯一的,因此该函数的返回值要么为0,要么为1,因此也可以用该函数来检测一个key是否在multimap中 |
5、multimap的使用
#include <iostream> #include <string> #include <map> using namespace std; int main() { multimap<string, string> m; //向map中插入元素 //将键值对插入map,用pair直接构造键值对 m.insert(pair<string, string>("peach", "桃子")); //用male_pair函数构造键值对 m.insert(make_pair("peach", "桃子")); //若是key不存在,则抛出异常 //m.at("banana") = "香蕉"; //返回m的大小 cout << m.size() << endl; //遍历map中的元素 for (auto& e : m) { cout << e.first << "--->" << e.second << endl; } cout << endl; //删除key为"apple"的元素 m.erase("apple"); if (m.count("apple") == 1) { cout << "apple还在" << endl; } else { cout << "apple被删除" << endl; } system("pause"); return 0; }
讯享网
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/18873.html