C++核心编程和桌面应用开发 第十七天(set和multiset容器 pair map和multimap容器)

目录

1.set和multiset容器

1.1构造和赋值

1.2交换和大小

1.3插入和删除

1.4统计和查找

1.5pair对组

1.6set和multiset的区别

1.7指定内置数据类型排序规则

1.8指定自定义数据类型排序规则

2.map和multimap容器

2.1构造和赋值

2.2交换和大小

2.3插入和删除

2.4统计和查找

2.5指定排序规则


1.set和multiset容器

set/multiset属于关联式容器,底层结构用二叉树实现的,所有元素在插入时会被自动排序

set/multiset的区别:

  • set不允许容器中有重复元素,multiset允许

1.1构造和赋值

【构造函数】

【拷贝构造函数】

注意:set容器插入相同数据时,不会报错,只是插入失败

1.2交换和大小

【交换函数】

注意:交换的容器内存储的数据类型必须和原容器内存储的相同

【大小函数】

1.3插入和删除

【插入函数】

注意:set容器的insert在插入时返回pair对组,第一个位置为插入位置,第二个位置是bool值,代表插入是否成功

【删除函数】

1.4统计和查找

【统计个数函数】

//key为set容器中存储的元素值

【查找函数】

1.5pair对组

功能:成对出现的数据,利用对组,一次可以返回两个数据

【构造函数】

【访问函数】

first();   //第一个元素              second();  //第二个元素

1.6set和multiset的区别

区别:

  • set不能插入重复数据,multiset可以
  • set插入数据后,会返回是否插入成功
  • multiset不会检测重复数据

1.7指定内置数据类型排序规则

set<int,默认规则> setNumber;

//仿函数
class myCopmare
{
public://仿函数返回值为bool值bool operator()(int v1, int v2){return v1 > v2;	//降序}
};set<int, myCopmare> s;	//降序排序

1.8指定自定义数据类型排序规则

与list类似

2.map和multimap容器

关联式容器,底层用二叉树实现

特点:

  • map中所有元素都是pair
  • 元素会根据key自动排序
  • 可以根据key快速定位value
  • pair中第一个是key,起到索引作用,第二个是value

区别:map不允许有重复key值(插入相同key值不报错,只是插入失败),multimap允许

2.1构造和赋值

【构造函数】

【赋值函数】

//举例
map<int, int> m;
m.insert(pair<int, int>(1, 10));
m.insert(pair<int, int>(2, 20));
m.insert(pair<int, int>(3, 30));

2.2交换和大小

【交换函数】

注意:交换的容器内存储的数据类型必须和原容器内存储的相同

【大小函数】

2.3插入和删除

【插入函数】

注意:利用[ ]访问数据时,要确保key存在,若key不存在会创建key,将value为0的元素插入

//举例
map<int, int> m;
m.insert(pair<int, int>(1, 10));
m[2]=10;    //first=2    second=10;

【删除函数】

2.4统计和查找

【统计函数】

【查找函数】

2.5指定排序规则

map<int,int,默认升序> m;

注意:是按照key来排序的

//举例
class myCopmare
{
public:bool operator()(int v1, int v2){return v1 > v2;	//降序}
};map<int, int,myCopmare> m;	//降序排序

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

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

相关文章

【vue】13.深入理解递归组件

在Vue.js的开发实践中&#xff0c;组件是构建界面的核心概念。而递归组件则是一种特殊的组件&#xff0c;它能够自己调用自己&#xff0c;从而创造出无限嵌套的界面结构。本文将带你了解递归组件的应用&#xff0c;以及如何在Vue中实现和使用它。 一.什么是递归组件&#xff1f…

【Python爬虫实战】网络爬虫完整指南:网络协议OSI模型

网络爬虫完整指南&#xff1a;从协议基础到实践应用 什么是网络协议&#xff1f; **网络协议&#xff08;Network Protocol&#xff09;**是指计算机网络中设备和设备之间进行通信的规则和约定。它定义了数据传输的格式、顺序、传输方法和错误处理机制&#xff0c;使不同设备和…

01.如何用DDD重构老项目

学习资料来源&#xff1a;DDD独家秘籍视频合集 https://space.bilibili.com/24690212/channel/collectiondetail?sid1940048&ctype0 文章目录 动机DDD与重构实践重构? 重写从一开始就采用DDD重构步骤1. 添加领域模块2.分离出有价值的代码3.迁移到领域模块4.重复2,3 动机 …

OSI公布OSAID 1.0版 “开源人工智能”首次被定义

在2024年ALL THINGS OPEN大会上&#xff0c;Open Source Initiative (OSI) 正式发布了开源人工智能定义&#xff08;OSAID&#xff09;1.0版本&#xff0c;标志着全球首个开源AI标准的诞生。OSAID将作为衡量人工智能系统是否符合“开源人工智能”标准的依据&#xff0c;为社区主…

接口测试(八)jmeter——参数化(CSV Data Set Config)

一、CSV Data Set Config 需求&#xff1a;批量注册5个用户&#xff0c;从CSV文件导入用户数据 1. 【线程组】–>【添加】–>【配置元件】–>【CSV Data Set Config】 2. 【CSV数据文件设置】设置如下 3. 设置线程数为5 4. 运行后查看响应结果

pycharm 中 json 库的常用操作

文章目录 1. 导入 json 模块2. 将 Python 对象编码为 JSON 字符串&#xff08;序列化&#xff09;3. 将 JSON 字符串解码为 Python 对象&#xff08;反序列化&#xff09;4. 从文件中读取 JSON 数据5. 将 Python 对象写入 JSON 文件6. 处理 JSON 解码错误总结 在 PyCharm 中&am…

Flutter加载本地HTML的优雅解决方案:轻松实现富文本展示

在移动开发中&#xff0c;展示复杂的富文本是一项常见需求&#xff0c;而有时候我们需要将HTML文件直接嵌入到Flutter应用中。使用HTML不仅能丰富内容展示&#xff0c;还可以避免重复开发。但是&#xff0c;如何在Flutter中高效、优雅地加载本地HTML呢&#xff1f;这篇文章就带…

MySQL数据库数据类型介绍

1. 数值类型 整数类型&#xff1a; TINYINT&#xff1a;1 字节&#xff0c;范围 -128 到 127&#xff08;或 0 到 255&#xff09;。SMALLINT&#xff1a;2 字节&#xff0c;范围 -32,768 到 32,767&#xff08;或 0 到 65,535&#xff09;。MEDIUMINT&#xff1a;3 字节&…

PART 1 数据挖掘概论 — 数据挖掘方法论

目录 数据库知识发掘步骤 数据挖掘技术的产业标准 CRISP-DM SEMMA 数据库知识发掘步骤 数据库知识发掘(Knowledge Discovery in Database,KDD)是从数据库中的大量数据中发现不明显、之前未知、可能有用的知识。 知识发掘流程(Knowledge Discovery Process)包括属性选择…

【优选算法篇】前缀之序,后缀之章:于数列深处邂逅算法的光与影

文章目录 C 前缀和详解&#xff1a;基础题解与思维分析前言第一章&#xff1a;前缀和基础应用1.1 一维前缀和模板题解法&#xff08;前缀和&#xff09;图解分析C代码实现易错点提示代码解读题目解析总结 1.2 二维前缀和模板题解法&#xff08;二维前缀和&#xff09;图解分析C…

Xcode 16.1 (16B40) 发布下载 - Apple 平台 IDE

Xcode 16.1 (16B40) 发布下载 - Apple 平台 IDE IDE for iOS/iPadOS/macOS/watchOS/tvOS/visonOS 发布日期&#xff1a;2024 年 10 月 28 日 Xcode 16.1 包含适用于 iOS 18.1、iPadOS 18.1、Apple tvOS 18.1、watchOS 11.1、macOS Sequoia 15.1 和 visionOS 2.1 的 SDK。Xco…

Codeforces Round 946 (Div. 3) G. Money Buys Less Happiness Now(反悔贪心)

题目链接 Codeforces Round 946 (Div. 3) G. Money Buys Less Happiness Now 思路 我们维护当前拥有的钱 s u m sum sum和一个大根堆&#xff0c;大根堆记录用了哪些 c i c_{i} ci​。 我们先尝试获得当前月的幸福&#xff0c; s u m s u m − c i sum sum - c_{i} sumsu…

LeetCode 3211.生成不含相邻零的二进制字符串:二进制枚举+位运算优化

【LetMeFly】3211.生成不含相邻零的二进制字符串&#xff1a;二进制枚举位运算优化 力扣题目链接&#xff1a;https://leetcode.cn/problems/generate-binary-strings-without-adjacent-zeros/ 给你一个正整数 n。 如果一个二进制字符串 x 的所有长度为 2 的子字符串中包含 …

SpringBoot篇(简化操作的原理)

目录 一、代码位置 二、统一版本管理&#xff08;parent&#xff09; 三、提供 starter简化 Maven 配置 四、自动配置 Spring&#xff08;引导类&#xff09; 五、嵌入式 servlet 容器 一、代码位置 二、统一版本管理&#xff08;parent&#xff09; SpringBoot项目都会继…

Gin框架html/vue前端使用hls.js播放/点播m3u8(hls)格式视频

说明 在web应用开发时遇到在线播放m3u8格式视频&#xff0c;由于m3u8是多分片视频&#xff0c;原生video标签无法直接播放&#xff0c;所以需要js对m3u8处理才能播放&#xff0c;网上有很多插件&#xff0c;这里我选择最近简单方法hls.js播放&#xff0c;引入一个js文件即可。…

【云原生】云原生后端:监控与观察性

目录 引言一、监控的概念1.1 指标监控1.2 事件监控1.3 告警管理 二、观察性的定义三、实现监控与观察性的方法3.1 指标收集与监控3.2 日志管理3.3 性能分析 四、监控与观察性的最佳实践4.1 监控工具选择4.2 定期回顾与优化 结论参考资料 引言 在现代云原生架构中&#xff0c;监…

【感知模块】深度神经网络实现运动预测

系列文章目录 提示:这里可以添加系列文章的所有文章的目录,目录需要自己手动添加 TODO:写完再整理 文章目录 系列文章目录前言运动预测(Motion Prediction)感知中的运动预测(深度神经网络)前言 认知有限,望大家多多包涵,有什么问题也希望能够与大家多交流,共同成长! …

数据库之多表查询

一.子查询 在SQL语句中嵌套select语句&#xff0c;称为嵌套查询&#xff0c;又称子查询 # 语法select * from 表1 where 字段1(select 字段1 from 表2); 子查询是一个嵌套在select、insert、update 或delete 语句或其他子查询中查询 注意&#xff1a;将子查询和比较运算符联…

业务流程顺畅度为何受制于数据失真

在当今数字化驱动的商业环境中&#xff0c;企业的业务流程高度依赖于数据的准确性和完整性。然而&#xff0c;数据失真问题却如同隐匿在流程中的“暗礁”&#xff0c;频繁地给企业的业务流程顺畅度带来严重挑战&#xff0c;进而影响企业的整体运营效率和竞争力。 数据失真的表…

使用 Pandas 进行时间序列分析的 10个关键点

使用Pandas进行时间序列分析的10个关键点&#xff08;由于篇幅限制&#xff0c;这里调整为10个&#xff0c;但实际操作中可能涉及更多细节&#xff09;如下&#xff1a; 1. 创建时间序列数据 时间序列数据是指在多个时间点上形成的数值序列。在Pandas中&#xff0c;可以使用t…