C++进阶 —— multimap

news/2024/10/17 13:29:05/

目录

一,multimap介绍

二,multimap使用


一,multimap介绍

  • multimap是关联式容器,按照特定顺序存储键值对<key、value>,其中多个键值对之间的key可以重复;
  • 通常按照key排序和唯一标识元素,而映射的value存储与key关联的内容;key和value的类型可能不同,通过multimap内部的成员类型value_type组合在一起,value_type是组合key和value的键值对,别名为pair(typedef pair<const key, T> value_type);
  • multimap中的元素总是通过其内部比较对象,按照指定的严格弱排序标准对key进行排序的;
  • multimap通过key访问单个元素的速度通常比unordered_multimap容器慢,但使用迭代器直接遍历multimap中的元素可以得到关于key有序的序列;
  • multimap在底层用二叉搜索树(红黑树)来实现;

注:multimap与map唯一不同就是,map中key是唯一的,multimap中key是可以重复的;

二,multimap使用

  • multimap中key是可以重复的;
  • multimap中的元素默认将key按照小于来比较;
  • multimap中没有重载operator[]操作;

构造函数

操作函数

//迭代器iterator begin() noexcept;
const_iterator begin() const noexcept;iterator end() noexcept;
const_iterator end() const noexcept;reverse_iterator rbegin() nothrow;
const_reverse_iterator rbegin() const nothrow;reverse_iterator rend() nothrow;
const_reverse_iterator rend() const nothrow;//插入
single element (1)	iterator insert (const value_type& val);template <class P> iterator insert (P&& val);
with hint (2)	iterator insert (const_iterator position, const value_type& val);template <class P> iterator insert (const_iterator position, P&& val);
range (3)	template <class InputIterator>void insert (InputIterator first, InputIterator last);
initializer list (4)	void insert (initializer_list<value_type> il);//删除	
iterator  erase (const_iterator position);
size_type erase (const key_type& k);
iterator  erase (const_iterator first, const_iterator last);//查找iterator find (const key_type& k);
const_iterator find (const key_type& k) const;bool empty() const noexcept;
size_type size() const noexcept;
size_type count (const key_type& k) const;
void swap (multimap& x);
void clear() noexcept;
key_compare key_comp() const;
value_compare value_comp() const;iterator lower_bound (const key_type& k);
const_iterator lower_bound (const key_type& k) const;iterator upper_bound (const key_type& k);
const_iterator upper_bound (const key_type& k) const;pair<const_iterator,const_iterator> equal_range (const key_type& k) const;pair<iterator,iterator> equal_range (const key_type& k);
int main()
{multimap<string, string> m;m.insert(pair<string, string>("peach", "桃子")); m.insert(make_pair("banan", "香蕉"));m.insert(make_pair("banan", "香蕉"));cout << m.size() << endl;cout << m.count("banan") << endl;for (auto& e : m){cout << e.first << "-->" << e.second << endl;}m.erase("banan");multimap<string, string>::iterator it = m.begin();while (it != m.end()){cout << (*it).first << "-->" << (*it).second << endl;++it;}it = m.find("peach");cout << (*it).first << "-->" << (*it).second << endl;return 0;
}


http://www.ppmy.cn/news/107341.html

相关文章

Apache的日志分割

一、日志分割的作用 我们知道当服务安装完成以后&#xff0c;都会在相关服务下有一个logs文件里面有着访问日志和错误日志。访问日志可以帮我们记录访问者的信息&#xff0c;错误日志一般在服务搭建&#xff0c;服务配置&#xff0c;启动时能够快速寻找错误原因的日志&#xf…

剑指 Offer 04. 二维数组中的查找解题思路

文章目录 标题解题思路优化 标题 在一个 n * m 的二维数组中&#xff0c;每一行都按照从左到右 非递减 的顺序排序&#xff0c;每一列都按照从上到下 非递减 的顺序排序。请完成一个高效的函数&#xff0c;输入这样的一个二维数组和一个整数&#xff0c;判断数组中是否含有该整…

【pytest】tep环境变量、fixtures、用例三者之间的关系

tep是一款测试工具&#xff0c;在pytest测试框架基础上集成了第三方包&#xff0c;提供项目脚手架&#xff0c;帮助以写Python代码方式&#xff0c;快速实现自动化项目落地。 在tep项目中&#xff0c;自动化测试用例都是放到tests目录下的&#xff0c;每个.py文件相互独立&…

Java 多线程共享数据引发的问题

一、多线程并发情况下&#xff0c;线程不安全​​ 1、使用多线程实现银行取钱​​ package theads;/*** ClassName: TestBank* Description: TODO* Author: HLX* date: 2023/5/29 14:53* Version: V1.0*//*** 线程不安全&#xff1a; 取钱* <p>* 逻辑&#xff1a;* 连取…

洗地机充电底座语音芯片选型?NV040DS语音芯片

一、洗地机语音提示功能的价值 洗地机充电底座加入语音提示功能&#xff0c;主要是为了提高洗地机的智能化程度和使用便利性&#xff01; 1. 提高使用效率&#xff1a;底座语音提示充电状态可以使用户更方便地掌握底座电量和洗地机的使用情况&#xff0c;从而更快捷地对底座进…

算法---边界着色

题目 给你一个大小为 m x n 的整数矩阵 grid &#xff0c;表示一个网格。另给你三个整数 row、col 和 color 。网格中的每个值表示该位置处的网格块的颜色。 两个网格块属于同一 连通分量 需满足下述全部条件&#xff1a; 两个网格块颜色相同 在上、下、左、右任意一个方向上…

SSH配置密钥免密码登录

1.生成key 在本地主机输入以下命令 [rootlocalhost ~]# ssh-keygen 一直回车 Generating public/private rsa key pair. Enter file in which to save the key (/root/.ssh/id_rsa): Created directory /root/.ssh. Enter passphrase (empty for no passphrase): Enter s…

信创办公–基于WPS的EXCEL最佳实践系列 (规整数据摆放)

信创办公–基于WPS的EXCEL最佳实践系列 &#xff08;规整数据摆放&#xff09; 目录 应用背景操作步骤1、数据排序2、例如&#xff1a;职务按照 经理-主任-职员 排序3、排列第二种方法4、实操案例5、案例练习一方法一&#xff1a;通过公式函数增加辅助列方法二&#xff1a;用辅…