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

news2024/11/23 21:11:19

目录

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.coloradmin.cn/o/2229232.html

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

相关文章

Android中常用adb命令

目录 1.adb连接安卓模拟器 2.adb列出所有已经连接的设备 3.adb显示设备的日志信息 4.adb 电脑文件推送到安卓模拟器中 5.adb 手机传送文件到电脑 6.adb获取安卓应用的包名和Activity名 附录 1--命令 1&#xff09;adb devices 2&#xff09;adb install 路径> 3&#xff09;…

机器学习算法之回归算法

一、回归算法思维导图 二、算法概念、原理、应用场景和实例代码 1、线性回归 1.1、概念 ‌‌线性回归算法是一种统计分析方法&#xff0c;用于确定两种或两种以上变量之间的定量关系。‌ 线性回归算法通过建立线性方程来预测因变量&#xff08;y&#xff09;和一个或多个自变量…

SpringBoot项目如何设置定时任务总开关

目录 方法一&#xff1a;使用Spring Profiles 1.1 步骤1 1.2 步骤2 1.3 步骤3 1.4 步骤4 方法二&#xff1a;使用ConditionalOnProperty 2.1 步骤1 2.2 步骤2 2.3 步骤3 方法三&#xff1a; 主启动类禁用EnableScheduling 定时任务原理剖析&#xff08;选看&#xf…

计算机前沿技术-人工智能算法-大语言模型-最新研究进展-2024-10-21

计算机前沿技术-人工智能算法-大语言模型-最新研究进展-2024-10-21 目录 文章目录 计算机前沿技术-人工智能算法-大语言模型-最新研究进展-2024-10-21目录1. The Fair Language Model Paradox摘要研究背景问题与挑战如何解决创新点算法模型实验效果重要数据与结论推荐阅读指数&…

Python——实时域名通信状态监控

在互联网时代&#xff0c;网站和在线服务的可用性对于个人和企业都至关重要。域名的通信状态直接关系到服务的可达性&#xff0c;因此&#xff0c;实时监控域名的通信状态成为了一项基本需求。本文将详细介绍一个使用Python编写的简单域名通信状态监控工具&#xff0c;该工具能…

vue vxeui 上传组件 vxe-upload 全局配置上传方法,显示上传进度,最完美的配置方案

Vxe UI 上传组件 vxe-upload 全局配置上传方法&#xff0c;显示上传进度&#xff0c;最完美的配置方案 正常使用上传组件 vxe-upload&#xff0c;都是在用的时候传自定义上传方法&#xff0c;然后进行处理。几个页面是没什么问题&#xff0c;当系统页面非常多的时候&#xff0…

springboot 修复 Spring Framework 特定条件下目录遍历漏洞(CVE-2024-38819)

刚解决Spring Framework 特定条件下目录遍历漏洞&#xff08;CVE-2024-38816&#xff09;没几天&#xff0c;又来一个新的&#xff0c;真是哭笑不得啊。 springboot 修复 Spring Framework 特定条件下目录遍历漏洞&#xff08;CVE-2024-38816&#xff09;https://blog.csdn.ne…

SSH登录介绍

说明&#xff1a;一般登录服务器&#xff0c;我们可以用远程连接工具&#xff0c;如XShell、Windterm等&#xff0c;或者通过公司搭建的JumpServer&#xff08;跳板机、堡垒机&#xff09;来连接。前者是点对点登录&#xff0c;输入主机、端口&#xff0c;通过SSH协议登录&…

Unity计算二维向量夹角余弦值和正弦值的优化方法参考

如果不考虑优化问题&#xff0c;计算两个向量的余弦值或者正弦值可以直接使用类似的方法&#xff1a; [SerializeField] Vector2 v1, v2;void Start() {float valCos Mathf.Acos(Vector2.SignedAngle(v1, v2));float valSin Mathf.Asin(Vector2.SignedAngle(v1, v2)); } 但是…

理解 CSS 中的绝对定位与 Flex 布局混用

理解 CSS 中的绝对定位与 Flex 布局混用 在现代网页设计中&#xff0c;CSS 布局技术如 flex 和绝对定位被广泛使用。然而&#xff0c;这两者结合使用时&#xff0c;可能会导致一些意想不到的布局问题。本文将探讨如何正确使用绝对定位元素&#xff0c;避免它们受到 flex 布局的…

JAVA力扣每日一题:P3216. 交换后字典序最小的字符串

本题来自&#xff1a;力扣-每日一题 力扣 (LeetCode) 全球极客挚爱的技术成长平台https://leetcode.cn/ 题解&#xff1a; class Solution {public String getSmallestString(String s) {int len s.length();int[] arr new int[len];for (int i 0; i < len; i) {arr[i…

Vue3 学习笔记(十二)侦听器详解

在 Vue 3 中&#xff0c;侦听器是一种响应式特性&#xff0c;允许你观察和响应 Vue 实例上的数据变动。Vue 提供了 watch 和 watchEffect 两个函数来创建侦听器。 1、watch 侦听器 watch 是一个用于侦听特定数据源变化的函数。它允许你指定一个或多个数据源&#xff0c;并在这些…

#渗透测试#SRC漏洞挖掘# 信息收集-常见端口及谷歌语法

免责声明 本教程仅为合法的教学目的而准备&#xff0c;严禁用于任何形式的违法犯罪活动及其他商业行为&#xff0c;在使用本教程前&#xff0c;您应确保该行为符合当地的法律法规&#xff0c;继续阅读即表示您需自行承担所有操作的后果&#xff0c;如有异议&#xff0c;请立即停…

SAP ABAP开发学习——第一代增强(包含增强演示)

​​​​​​SAP ABAP开发学习——第二代增强&#xff08;包含增强演示&#xff09;-CSDN博客 SAP ABAP开发学习——第三代增强&#xff08;BADI)-CSDN博客 概念 第一代增强(增强嵌入标准程序中) 第一代出口-User exit 以SD用户出口为例 SD及MM较多的程序都是基于源码控制来…

安宝特分享 | AR技术引领:跨国工业远程协作创新模式

在当今高度互联的工业环境中&#xff0c;跨国合作与沟通变得日益重要。然而&#xff0c;语言障碍常常成为高效协作的绊脚石。安宝特AR眼镜凭借其强大的多语言自动翻译和播报功能&#xff0c;正在改变这一局面&#xff0c;让远程协作变得更加顺畅。 01 多语言翻译优势 安宝特A…

动态规划 01背包(算法)

现有四个物品&#xff0c;小偷的背包容量为8&#xff0c;怎么可以偷得价值较多的物品 如: 物品编号&#xff1a; 1 2 3 4 物品容量&#xff1a; 2 3 4 5 物品价值&#xff1a; 3 4 5 8 记f(k,w) ,当背包容量为w,可以偷k件物品…

AWD挨打记录

前言 昨天参加了星盟的AWD集训&#xff0c;本来寻思能猛猛乱杀&#xff0c;结果加固时间只有20分钟&#xff0c;WAF还没push上去就被三家上了不死马QAQ cms是站帮主&#xff0c;之前没打过&#xff0c;D盾啥也没扫出来&#xff0c;还寻思是个贼安全的系统&#xff0c;结果洞满…

InstructIR: High-Quality Image Restoration Following Human Instructions 论文阅读笔记

这是Radu大佬所在的Wrzburg大学的computer vision lab实验室发表在ECCV2024上的一篇论文&#xff0c;代码开源。文章提出了一种文本引导的All-in-One的restoration模型&#xff0c;如下图所示&#xff1a; 这个工作其实跟"InstructPix2Pix: Learning to Follow Image Edit…

libavdevice.so.58: cannot open shared object file: No such file ordirectory踩坑

博主是将大图切分成小图时遇到 问题一、linux编译后&#xff0c;找不到ffmpeg中的一个文件 产生原因&#xff0c;各种包集成&#xff0c;然后安装以后乱七八糟&#xff0c;甚至官方的教程也不规范导致没有添加路径到系统文件导致系统执行的时候找不到 1.下载 博主进行的离线…

【SQL实验】表的更新和简单查询

完整代码在文章末尾 在上次实验创建的educ数据库基础上&#xff0c;用SQL语句为student表、course表和sc表中添加以下记录 【SQL实验】数据库、表、模式的SQL语句操作_创建一个名为educ数据库,要求如下: (下面三个表中属性的数据类型需要自己设计合适-CSDN博客在这篇博文中已经…