C++ —— map 和 multimap

news2024/11/25 3:01:50

一、map

1.介绍

1. map是关联容器,它按照特定的次序(按照key来比较)存储由键值key和值value组合而成的元 素。

 2. 在map中,键值key通常用于排序和惟一地标识元素,而值value中存储与此键值key关联的内容。键值key和值value的类型可能不同,并且在map的内部,key与value通过成员类型value_type绑定在一起,为其取别名称为pair: typedef pair value_type;

3. 在内部,map中的元素总是按照键值key进行比较排序的。

4. map中通过键值访问单个元素的速度通常比unordered_map容器慢,但map允许根据顺序 对元素进行直接迭代(即对map中的元素进行迭代时,可以得到一个有序的序列)。

5. map支持下标访问符,即在[]中放入key,就可以找到与key对应的value。

6. map通常被实现为二叉搜索树(更准确的说:平衡二叉搜索树(红黑树))。

2.键值对_pair

键值对kv模型实际上就是用pair去实现操作的

pair 实际上可以看作一个内部有两个元素的类模板,当需要使用两个绑定在一起的关系时,可以使用pair,在map的实现中就用到了pair作为成员变量、函数返回值等等

struct pair
{
	typeName1 first;
	typeName2 second;
};

pair的两个参数类型是在使用时自己确定穿参的,可以是任意类型,自定义类型或者容器都可以

3.常见接口说明

构造函数和迭代器没啥好说的,和之前学习过的容器都类似,补充一下,构造函数部分可以使用迭代器区间进行构造

前面两个都是基本接口,没啥好说的,第三个关于operator[ ]就比较厉害了

内部的实现涉及到Insert,Insert插入的值是一个pair类型,返回的值也是一个pair

插入的值是数据中用来储存的kv模型,是原来管理的数据

返回的pair,first是插入位置的迭代器,second是bool值表示插入是否成功

operator[ ]的实现是用Insert的返回值去访问到插入位置的迭代器,并且返回该位置下的value的引用,因此[ ]具备三个功能:

1.插入key和value

2.查找key并返回value(查找)

3.查找key并修改value

常见接口

4.总结

1. map中的的元素是键值对

2. map中的key是唯一的,并且不能修改

3. 默认按照小于的方式对key进行比较

4. map中的元素如果用迭代器去遍历,可以得到一个有序的序列

5. map的底层为平衡搜索树(红黑树),查找效率比较高O(logN)

6. 支持[ ]操作符,operator[ ]中实际进行插入查找。

二、multimap

multimap中的接口可以参考map,功能都是类似的。

注意:

1. multimap中的key是可以重复的。

2. multimap中的元素默认将key按照小于来比较

3. multimap中没有重载operator[]操作。

4. 使用时与map包含的头文件相同

总结

本章整理了关于map和multimap的相关使用方法和接口说明

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1189216.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

二十、泛型(5)

本章概要 边界通配符 编译器有多聪明逆变无界通配符捕获转换 边界 边界(bounds)在本章的前面进行了简要介绍。边界允许我们对泛型使用的参数类型施加约束。尽管这可以强制执行有关应用了泛型类型的规则,但潜在的更重要的效果是我们可以在…

获取AAC音频的ADTS固定头部信息

文章目录 前言一、AAC音频中的ADTS二、解析ADTS信息1.标准文档中介绍2.解析3.采样率索引和值4.下载AAC标准文档 前言 调试嵌入式设备中播放aac音频的过程中,了解了aac音频格式,记录在此,防止遗忘。 一、AAC音频中的ADTS ADTS(Audi…

代码随想录day2

目录 vscode 自定义代码模板Reference vscode 自定义代码模板 select User snippets from Settings on the bottom left corner. select a certain language for example: cpp create your own snippets 格式如下,防着写 第一行"cpp template",模板…

Kubernetes 中 RBAC、ServiceAccount 的区别和联系

Author:rab 目录 前言一、区别二、联系三、案例思考? 前言 首先,Kubernetes (K8s) RBAC (Role-Based Access Control) 和 ServiceAccount 都是 Kubernetes 中用于控制访问权限的两个重要概念,但是它们之间有一些区别和联系。 一…

chatgpt==对接API

来到首页 https://platform.openai.com/docs/overview quickstart turorial 生成API KEY https://platform.openai.com/api-keys 来体验下 setx OPENAI_API_KEY "your-api-key-here" echo %OPENAI_API_KEY% 编写PYTHON代码 pip install --upgrade openai from …

ChatGPT 报错“Sorry, you have been blocked…” 什么原因?如何解决?

原因: 频繁切换节点,使用免费代理,账号被锁定 解决办法: 遇到这种情况,请暂时先关闭代理(VPN),停止账号登陆,过段时间或隔天再试,防止账号被封。另外不建议使…

大模型在时间序列预测领域的最新15篇论文

最近在和大佬朋友们交流的时候,发现时间序列领域有一个很有潜力的新方向:大模型时间序列。 大模型可以处理不同类型的时间序列数据,例如文本、图像、音频等,也可以适应不同的时间序列数据的变化和异常情况,有助于提高…

TikTok shop美国小店适合哪些人做?附常见运营问题解答

一、Tiktok shop小店分类 大家都知道,美国小店可以分为5 种: 美国本土个人店: 最灵活,有扶持政策;美国法人企业店:要求高,有扶持政策;美国公司中国人占股店 (ACCU店) : 权重相对低&#xff0c…

文件改名:一次性解决文件名混乱,批量重命名技巧

在日常生活和工作中,我们经常会遇到文件名混乱的问题,例如文件名重复、格式不统一或者文件名错误等。这些问题不仅会给我们带来查找和使用上的困扰,还会影响我们的工作效率。为了解决这些问题,我们可以使用批量重命名技巧&#xf…

配置资源管理

Secret Secret 是用来保存密码、token、密钥等敏感数据的 k8s 资源,这类数据虽然也可以存放在 Pod 或者镜像中,但是放在 Secret 中是为了更方便的控制如何使用数据,并减少暴露的风险。 三种类型: kubernetes.io/service-accoun…

跨境电商中的二手宝藏:二手商品市场的崛起

在数字时代的崛起下,跨境电商已经成为了国际贸易的一个重要组成部分。它为人们提供了机会,能够轻松地购买来自世界各地的新商品。 然而,除了全新的产品,二手商品市场也在跨境电商中崭露头角,为买家和卖家提供全新的机…

第十五章,输入输出流代码

package 例题;import java.io.File;public class 例题1 {public static void main(String[] args) {//创建文件对象File file new File("D:\\Java15-1.docx");//判断,如果该文件存在。exists存在的意思if (file.exists()) {//删除//file.delete();//Syst…

AD9371 Crossbar

AD9371 系列快速入口 AD9371ZCU102 移植到 ZCU106 : AD9371 官方例程构建及单音信号收发 ad9371_tx_jesd -->util_ad9371_xcvr接口映射: AD9371 官方例程之 tx_jesd 与 xcvr接口映射 AD9371 官方例程 时钟间的关系与生成 : AD9371 官方…

springcloud小说阅读网站源码

开发工具: 大等于jdk1.8,大于mysql5.5,nodejs,idea(eclipse),vscode(webstorm) 技术说明: springcloud springboot mybatis vue elementui 功能介绍&…

Unity游戏开发基础组件

Unity2D 相机调整:Projection设置为Orthographic。也就是正交模式,忽视距离。 资源: Sprite:一种游戏资源,在2D游戏中表示角色场景的图片资源 SpriteSheet:切割一张图片为多个Sprite 在Sprite Editor中可以…

Git 入门使用 —— 建库、代码上下传、常用命令

目录 一、Git 入门 1.1 Git简介 1.2 Git安装 1.3 创建码云仓库 二、Git 使用 2.1 git初始化操作 2.2 代码上传 2.3 代码下载 2.4 代码更新 2.4.1 仓库管理者 2.4.1 仓库使用者 三、Git 常用命令 一、Git 入门 1.1 Git简介 Git是一个开源的分布式版本控制系统&am…

Vue3+vite+cesium环境搭建

引言 目前有不少vue3cesium的配置教学,存在以下两个问题: (1)vue3cli方式,随着项目的迭代,npm run serve 启动调试很慢; (2)vue3vite 确实能将调试启动提升不少的&…

CloudCompare 技巧五 CSF 体积计算等

42、CSF 原始点云 我这路要的是地面分离出来,所以我选的是Flat 结果如下: 43、点云超欠挖体积计算 结果: 44、 网格表面积体积测量 45、法向量

驾考在线答题系统源码:含PC+手机版驾考宝典多题库

安装说明: 1、上传到网站根目录 2、用 phpMyadmin 导入数据库文件 db.sql 3、修改数据库链接文件 /ThinkPHP/Conf/convention.php# (记得不要用记事本修改,否则可能会出现验证码显示不了问题,建议用 Notepad 4、 帐号 admin 密码…

一文带您了解云渲染

很多刚刚接触云渲染的网友可能还不太了解云渲染,不知道云渲染是什么,不知道如何选择云渲染,不知道云渲染怎么收费,今天小编归纳总结了一些网友比较关心的问题,在本文中一一为大家解答。 云渲染是什么? 云…