【C++】set与map

news2024/9/19 9:49:51

目录

一、键值对

二、set

1. set的模板参数列表

2. set的构造

3. set的迭代器

4. set的容量

5. set的修改

6. set的查找

三、map

 1. map的模板参数列表

2. map的构造

3. map的迭代器

4. map的容量

5. map的修改

6. map的查找


一、键值对

用来表示具有一一对应关系的一种结构,该结构中一般只包含两个成员变量key和value,key代 表键值,value表示与key对应的信息。比如:现在要建立一个英汉互译的字典,那该字典中必然 有英文单词与其对应的中文含义,而且,英文单词与其中文含义是一一对应的关系,即通过该应 该单词,在词典中就可以找到与其对应的中文含义。

SGI-STL中关于键值对的定义:

template <class T1, class T2>
 struct pair 
{
 typedef T1 first_type;
 typedef T2 second_type;
 T1 first;
 T2 second;
 pair(): first(T1()), second(T2())
 {}
 pair(const T1& a, const T2& b): first(a), second(b)
 {}
 };

 

二、set

  • set是按照一定次序存储元素的容器
  • 在set中,元素的value也标识它(value就是key,类型为T),并且每个value必须是唯一的。 set中的元素不能在容器中修改(元素总是const),但是可以从容器中插入或删除它们。
  • 在内部,set中的元素总是按照其内部比较对象(类型比较)所指示的特定严格弱排序准则进行 排序。
  • set容器通过key访问单个元素的速度通常比unordered_set容器慢,但它们允许根据顺序对 子集进行直接迭代。
  • set在底层是用二叉搜索树(红黑树)实现的。

 

1. set的模板参数列表

T: set中存放元素的类型,实际在底层存储的键值对。

Compare:set中元素默认按照小于来比较

Alloc:set中元素空间的管理方式,使用STL提供的空间配置器管理  

2. set的构造

3. set的迭代器

 

4. set的容量

5. set的修改

6. set的查找

 

三、map

  • map是关联容器,它按照特定的次序(按照key来比较)存储由键值key和值value组合而成的元 素。
  • 在map中,键值key通常用于排序和惟一地标识元素,而值value中存储与此键值key关联的 内容。键值key和值value的类型可能不同,并且在map的内部,key与value通过成员类型 value_type绑定在一起,为其取别名称为pair: typedef pair value_type;
  • 在内部,map中的元素总是按照键值key进行比较排序的。
  • map中通过键值访问单个元素的速度通常比unordered_map容器慢,但map允许根据顺序 对元素进行直接迭代(即对map中的元素进行迭代时,可以得到一个有序的序列)。
  • map支持下标访问符,即在[]中放入key,就可以找到与key对应的value。
  • map通常被实现为二叉搜索树(更准确的说:平衡二叉搜索树(红黑树))。

 

 1. map的模板参数列表

key: 键值对中key的类型

T: 键值对中value的类型

Compare: 比较器的类型,map中的元素是按照key来比较的,缺省情况下按照小于来比较,一般情况下(内置类型元素)该参数不需要传递,如果无法比较时(自定义类型),需要用户自己显式传递比较规则(一般情况下按照函数指针或者仿函数来传递)

Alloc:通过空间配置器来申请底层空间,不需要用户传递,除非用户不想使用标准库提供的 空间配置器

2. map的构造

 

3. map的迭代器

4. map的容量

5. map的修改

6. map的查找

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

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

相关文章

微服务八股-分布式事务-注册中心-服务保护

一、分布式事务 1.CAP和BASE 三者不能同时存在。 CP&#xff1a;由于网络分片的存在&#xff0c;如果要保证强一致性就不能写&#xff0c;此时不满足可用性 AP&#xff1a;由于网络分片的存在&#xff0c;如果要保证可用性&#xff0c;能读也能写&#xff0c;就不能保证强一致…

蜂窝物联水雨情监测:实时监测水雨情,提前预警守护平安家园!

蜂窝物联水雨情监测系统是一个集成了物联网技术的综合系统&#xff0c;主要用于实时监测和管理水文、气象信息&#xff0c;特别是关于水体&#xff08;如河流、湖泊等&#xff09;的水位和降雨量等关键参数。 水位、雨量等数据监测 实时采集水位计、雨量等数据&#xff1b;通过…

Google Extension 【Google 最佳扩展插件】

pockettube: youtube manager 订阅号分组沉浸式翻译&#xff1a;全网口碑炸裂的双语对照网页翻译插件Google 翻译腾讯翻译篡改猴MetaMaskGlarity: Summarize & Translate Any Page

执行普罗米修斯插件mysqld_exporter出现闪退问题如何解决?

运行 mysqld_exporter.exe 文件闪退的问题可能是由于配置文件或环境变量设置不正确导致的。 检查配置文件 my.cnf&#xff1a; 打开 my.cnf 文件&#xff0c;确保其中的配置项正确无误&#xff0c;尤其是 MySQL 数据库的连接信息。配置示例&#xff1a;[client] useryour_mysql…

Android studio版本和Android gradle plugin版本对应表

1.Android studio 版本的升级&#xff0c;一个方面上看主要是升级对AGP最高版本的支持 2.那为什么AGP要出高版本呢&#xff0c;主要支持高版本的API&#xff0c;真是一环扣一环

3.5 四个子空间的维度

一、概述 这一节的主要定理是将秩与维度联系在一起。矩阵的秩就是主元的个数&#xff0c;子空间的维度是基向量的个数&#xff0c;我们计算出这两个数就可以得到秩与维度。 A A A 的秩揭露了四个基本子空间的维度。 四个子空间中&#xff0c;两个子空间来自 A A A&#xff0c…

01Python相关基础学习

Python基础 模块相关导入模块sys模块 模块相关 导入模块 1. import 模块名 2. import 模块名 as 别名 3. from 模块名 import 成员名 as 别名sys模块 1. sys.argv 介绍: 实现从程序的外部想程序传递参数返回的是一个列表,第一个元素是程序文件名,第二个元素是程序外部传入的…

抖音小店怎么对接达人合作?达人带货的细节分享,附邀约达人话术

大家好&#xff0c;我是电商花花 人有多大胆&#xff0c;地就有多大产&#xff0c;做抖店想要出单&#xff0c;爆单&#xff0c;那必须要对接大量的达人来帮我们带货&#xff0c;抖音小店就是直播电商&#xff0c;帮我们对接的达人越多&#xff0c;出单就越多。 所以做抖店如…

龙蜥开发者说:夏日编码奇遇,中国科学院大学学子的开源世界探索记 | 第 27 期

「龙蜥开发者说」第 27 期来了&#xff01;开发者与开源社区相辅相成&#xff0c;相互成就&#xff0c;这些个人在龙蜥社区的使用心得、实践总结和技术成长经历都是宝贵的&#xff0c;我们希望在这里让更多人看见技术的力量。本期故事&#xff0c;我们邀请了中国科学院大学学生…

3D 生成重建015-nerf2mesh从神经辐射场中提取mesh和纹理!

3D 生成重建015-nerf2mesh从神经辐射场中提取mesh和纹理&#xff01; 文章目录 0 论文工作1 论文方法2 效果 0 论文工作 NeRF2Mesh 提出了一种从多视角 RGB 图像重建纹理表面网格的新方法。它克服了传统 NeRF 模型的局限性&#xff0c;由于其隐式表示&#xff0c;传统 NeRF 模…

有限元法之有限元空间的构造

目录 一、区域Ω的剖分 二、三角形一次元 三、一次元的基函数与面积坐标 四、三角形二次元及其基函数 前两节我们介绍了有限元基本概念和变分理论的推导&#xff0c;本节我们继续探讨有限元空间的构造。 一、区域Ω的剖分 对矩形区域进行三角剖分&#xff0c;其中x方向剖…

CPU数据传送控制方式

引入 为了实现CPU与I/O设备信息交换的同步 无条件传送 示例1&#xff1a; 示例2&#xff1a; 程序查询方式 引入 工作过程 单个外设 多个外设 特点 中断传送方式 工作过程 特点 DMA 概述 DMAC功能 总线请求信号HOLD 总线请求响应信号HOLDA 工作过程 小结

C++ 程序的基本要素

一 标识符 程序中变量、类型、函数和标号的名称称标识符。 a,b,name,int,char,main,void等。 系统已有的标识符称为关键字。 常见关键字 using,namespace,void,return; int,float,double,char,bool,signed,unsignex, long,short,const,true,false,sizeof if,else,for,do,whil…

基于STM32实现智能空气净化系统

目录 引言环境准备智能空气净化系统基础代码示例&#xff1a;实现智能空气净化系统 空气质量传感器数据读取风扇和滤网控制显示系统用户输入和设置应用场景&#xff1a;家庭空气净化与健康管理问题解决方案与优化收尾与总结 1. 引言 本教程将详细介绍如何在STM32嵌入式系统中…

揭秘淘宝API接口:轻松连接电商巨头,打造无限商业可能

淘宝API接口是淘宝平台对外开放的一系列接口&#xff0c;通过这些接口&#xff0c;开发者可以获取淘宝平台上的商品信息、订单信息、物流信息等数据&#xff0c;实现与淘宝平台的交互。淘宝API接口支持多种数据格式&#xff0c;如JSON、XML等&#xff0c;方便开发者根据自己的需…

【Python】【报错解决】【无法安装socket库】No matching distribution found for socket

一、问题描述 如下图&#xff0c;笔者在做一个安全相关的项目时&#xff0c;遇到如下报错&#xff1a; No matching distribution found for socket 在尝试安装socket&#xff08;套接字&#xff09;库时报错&#xff0c;报错代码&#xff1a; pip install socket二、原因及解…

基于SSM前后端分离版本的论坛系统

目录 前言 一、项目背景 二、相关技术及工具 三、数据库设计 四、软件开发 4.1、搭建环境 4.1.1、创建工程 4.1.2、配置application.yml文件 4.1.3、环境测试 创建测试接口 4.1.4、继续配置 4.2、公共组件 4.2.1、创建工程结构 4.2.2、配置数据源 添加相关依赖 …

视频监控平台AS-V1000产品介绍:账户或用户数据的导入和导出功能介绍

目录 一、功能描述 &#xff08;一&#xff09;导入功能定义 &#xff08;二&#xff09;导出功能定义 二、用户数据的导入导出的作用 三、AS-V1000新版本的导出和导入功能介绍 &#xff08;一&#xff09;功能主界面 &#xff08;二&#xff09;导出功能 1、导出操作 …

彭永东所交“答卷”道尽万般无奈,贝壳找房营收、利润双双锐减

就今年第一季度业绩披露后两日的股价变动来看&#xff0c;贝壳找房&#xff08;下称“贝壳”&#xff09;似乎并未在港股和美股市场取得预期的效果。 港股市场&#xff0c;截至5月24日收盘&#xff0c;贝壳-W&#xff08;HK:02423&#xff09;报收43.9港元/股&#xff0c;当日跌…

单元测试(了解)

单元测试定义 针对最小功能单元&#xff08;方法&#xff09;&#xff0c;编写测试代码对其进行正确性测试 之前如何进行单元测试&#xff1f;有什么问题&#xff1f; main中编写测试代码&#xff0c;调用方法测试 问题&#xff1a; 无法自动化测试 每个方法的测试可能不是…