当前位置: 首页 > news >正文

C++之set/multise容器

C++之set/multise容器

set基本概念
在这里插入图片描述

set构造和赋值

在这里插入图片描述

#include <iostream>
#include<set>
using namespace std;void PrintfSet(set<int>&s)
{for(set<int>::iterator it = s.begin();it != s.end();it++){cout<<*it<<" ";}cout<<endl;
}void test()
{set<int> s1;//插入数据,只有insert方式s1.insert(10);s1.insert(40);s1.insert(20);s1.insert(40);s1.insert(30);//set容器特点: 所有元素插入时候自动被排序//set容器不允许插入重复值PrintfSet(s1);//拷贝构造set<int>s2(s1);PrintfSet(s2);//赋值操作set<int>s3;s3 = s1;PrintfSet(s3);
}int main()
{test();cout << "Hello World!" << endl;return 0;
}

在这里插入图片描述

set大小和交换

在这里插入图片描述

#include <iostream>
#include<set>
using namespace std;void PrintfSet(set<int>&s)
{for(set<int>::iterator it = s.begin();it != s.end();it++){cout<<*it<<" ";}cout<<endl;
}void test()
{set<int> s1;//插入数据,只有insert方式s1.insert(10);s1.insert(40);s1.insert(20);s1.insert(40);s1.insert(30);//set容器特点: 所有元素插入时候自动被排序//set容器不允许插入重复值PrintfSet(s1);if(s1.empty()){cout<<"s1 is empty"<<endl;}else{cout<<"s1 is not empty"<<endl;cout<<"s1's size is "<<s1.size()<<endl;}set<int>s2;s2.insert(100);s2.insert(200);s2.insert(300);s2.insert(400);//swapcout<<"before swap"<<endl;PrintfSet(s1);PrintfSet(s2);s2.swap(s1);cout<<"after swap"<<endl;PrintfSet(s1);PrintfSet(s2);
}int main()
{test();cout << "Hello World!" << endl;return 0;
}

在这里插入图片描述

set插入和删除

在这里插入图片描述

#include <iostream>
#include<set>
using namespace std;void PrintfSet(set<int>&s)
{for(set<int>::iterator it = s.begin();it != s.end();it++){cout<<*it<<" ";}cout<<endl;
}void test()
{set<int> s1;//插入数据,只有insert方式s1.insert(10);s1.insert(40);s1.insert(20);s1.insert(40);s1.insert(30);//set容器特点: 所有元素插入时候自动被排序//set容器不允许插入重复值PrintfSet(s1);s1.erase(s1.begin());PrintfSet(s1);s1.erase(30);PrintfSet(s1);//s1.erase(s1.begin(),s1.end());s1.clear();}int main()
{test();cout << "Hello World!" << endl;return 0;
}

在这里插入图片描述

set查找和统计

在这里插入图片描述

#include <iostream>
#include<set>
using namespace std;void PrintfSet(set<int>&s)
{for(set<int>::iterator it = s.begin();it != s.end();it++){cout<<*it<<" ";}cout<<endl;
}void test()
{set<int> s1;//插入数据,只有insert方式s1.insert(10);s1.insert(40);s1.insert(20);s1.insert(40);s1.insert(30);//set容器特点: 所有元素插入时候自动被排序//set容器不允许插入重复值PrintfSet(s1);set<int>::iterator pos = s1.find(30);if(pos != s1.end()){cout<<"have finded"<<endl;}else{cout<<"no find"<<endl;}
//对于set而言 统计结果 要么是0 要么是1int num = s1.count(30);cout<<"num is "<<num<<endl;
}int main()
{test();cout << "Hello World!" << endl;return 0;
}

在这里插入图片描述

set与multise区别

在这里插入图片描述

#include <iostream>
#include<set>
using namespace std;void PrintfSet(set<int>&s)
{for(set<int>::iterator it = s.begin();it != s.end();it++){cout<<*it<<" ";}cout<<endl;
}void test()
{set<int> s1;//插入数据,只有insert方式pair<set<int>::iterator,bool> ret = s1.insert(10);if(ret.second){cout<<"insert success at first"<<endl;}else{cout<<"insert fail at first"<<endl;}ret = s1.insert(10);if(ret.second){cout<<"insert success at second"<<endl;}else{cout<<"insert fail at second"<<endl;}multiset<int>m1;//允许插入重复值m1.insert(10);m1.insert(10);m1.insert(10);m1.insert(10);for(multiset<int>::iterator it = m1.begin();it != m1.end();it++){cout<<*it<<" ";}cout<<endl;
}int main()
{test();cout << "Hello World!" << endl;return 0;
}

在这里插入图片描述

pair对组的创建

在这里插入图片描述

#include <iostream>
#include<set>
using namespace std;void PrintfSet(set<int>&s)
{for(set<int>::iterator it = s.begin();it != s.end();it++){cout<<*it<<" ";}cout<<endl;
}void test()
{//第一种方式pair<string,int>p("Tom",20);cout<<"name is "<<p.first<<"age is "<<p.second<<endl;//第二种方式pair<string,int>p2 = make_pair("Jin",21);cout<<"name is "<<p2.first<<"age is "<<p2.second<<endl;
}int main()
{test();cout << "Hello World!" << endl;return 0;
}

在这里插入图片描述

set排序

在这里插入图片描述

#include <iostream>
#include<set>
using namespace std;void PrintfSet(set<int>&s)
{for(set<int>::iterator it = s.begin();it != s.end();it++){cout<<*it<<" ";}cout<<endl;
}
class MyCompare
{
public:bool operator()(int v1,int v2){return v1>v2;}
};void test()
{set<int>s1;s1.insert(10);s1.insert(40);s1.insert(30);s1.insert(50);s1.insert(20);PrintfSet(s1);//指定排序规则为从大到小set<int,MyCompare>s2;s2.insert(10);s2.insert(40);s2.insert(30);s2.insert(50);s2.insert(20);for(set<int,MyCompare>::iterator it = s2.begin();it != s2.end();it++){cout<<*it<<" ";}cout<<endl;
}int main()
{test();cout << "Hello World!" << endl;return 0;
}

在这里插入图片描述

set存放自定义数据

#include<iostream>
#include<string>
using namespace std;
#include<set>
//set容器排序,存放自定义数据类型
class Person
{
public:Person(string name,int age){this->m_name = name;this->m_age = age;}string m_name;int m_age;
};class MyCompare
{
public:bool operator()(const Person&p1, const Person& p2){//按照年龄进行降序return p1.m_age > p2.m_age;}
};void test()
{//指定排序规则为从大到小set<Person, MyCompare>s;//创建Person对象Person p1 ("liubei",23);Person p2("zhangfei", 21);Person p3("guanyu", 22);Person p4("zhaoyun", 24);s.insert(p1);s.insert(p2);s.insert(p3);s.insert(p4);for (set<Person, MyCompare>::iterator it = s.begin();it != s.end();it++){cout << "name is " << (*it).m_name << "age is " << (*it).m_age << endl;}cout << endl;
}int main()
{test();system("pause");return 0;
}

在这里插入图片描述

相关文章:

C++之set/multise容器

C之set/multise容器 set基本概念 set构造和赋值 #include <iostream> #include<set> using namespace std;void PrintfSet(set<int>&s) {for(set<int>::iterator it s.begin();it ! s.end();it){cout<<*it<<" ";}cout&l…...

本地部署AutoGPT

我们都了解ChatGPT&#xff0c;是Openai退出的基于GPT模型的新一代 AI助手&#xff0c;可以帮助解决我们在多个领域的问题。但是你会发现&#xff0c;在某些问题上&#xff0c;ChatGPT 需要经过不断的调教与沟通&#xff0c;才能得到接近正确的答案。对于你不太了解的领域领域&…...

ProtocolBuffers(protobuf)详解

目录 前言特点语法定义关键字JSON与Protocol Buffers互相转换gRPC与Protocol Buffers的关系 前言 Protocol Buffers&#xff08;通常简称为protobuf&#xff09;是Google公司开发的一种数据描述语言&#xff0c;它能够将结构化数据序列化&#xff0c;可用于数据存储、通信协议…...

HTTP 到 HTTPS 再到 HSTS 的转变

近些年&#xff0c;随着域名劫持、信息泄漏等网络安全事件的频繁发生&#xff0c;网站安全也变得越来越重要&#xff0c;也促成了网络传输协议从 HTTP 到 HTTPS 再到 HSTS 的转变。 HTTP HTTP&#xff08;超文本传输协议&#xff09; 是一种用于分布式、协作式和超媒体信息系…...

清华学霸告诉你:如何自学人工智能?

清华大学作为中国顶尖的学府之一&#xff0c;培养了许多优秀的人才&#xff0c;其中不乏在人工智能领域有所成就的学霸。通过一位清华学霸的经验分享&#xff0c;揭示如何自学人工智能&#xff0c;帮助你在这场科技浪潮中勇往直前。 一、夯实基础知识 数学基础&#xff1a;学习…...

Ubuntu 安装VMware Tools选项显示灰色,如何安装VMware Tools

切换apt源为阿里云&#xff1a; https://qq742971636.blog.csdn.net/article/details/134291339 只要你的网络没问题&#xff0c;你直接执行这几个命令&#xff0c;重启ubuntu虚拟机即可、 sudo dpkg --configure -a sudo apt-get autoremove open-vm-tools sudo apt-get ins…...

SpringBoot 2.x 实战仿B站高性能后端项目

SpringBoot 2.x 实战仿B站高性能后端项目 下栽の地止&#xff1a;请看文章末尾 通常SpringBoot新建项目&#xff0c;默认是集成了Maven&#xff0c;然后所有内容都在一个主模块中。 如果项目架构稍微复杂一点&#xff0c;就需要用到Maven多模块。 本文简单概述一下&#xff0c…...

vscode文件夹折叠问题

今天发现一个vscode的文件夹显示的问题&#xff0c;首先是这样的&#xff0c;就是我的文件夹里又一个子文件夹&#xff0c;子文件夹里有一些文件&#xff0c;但是我发现无法折叠起这个子文件夹&#xff0c;总是显示全部的文件&#xff0c;这让我备份很难&#xff0c;具体参考 h…...

4-flask-cbv源码、Jinja2模板、请求响应、flask中的session、flask项目参考

1 flask中cbv源码 2 Jinja2模板 3 请求响应 4 flask中的session 5 flask项目参考 1 flask中cbv源码 ***flask的官网文档&#xff1a;***https://flask.palletsprojects.com/en/3.0.x/views/1 cbv源码执行流程1 请求来了&#xff0c;路由匹配成功---》执行ItemAPI.as_view(item…...

2.Pandas数据预处理

2.1 数据清洗 以titanic数据为例。 df pd.read_csv(titanic.csv) 2.1.1 缺失值 &#xff08;1&#xff09;缺失判断 df.isnull() &#xff08;2&#xff09;缺失统计 # 列缺失统计 df.isnull().sum(axis0) # 行缺失统计 df.isnull().sum(axis1) # 统计缺失率 df.isnu…...

C# IEnumerable<T>介绍

IEnumerable 是 C# 中的一个接口&#xff0c;它是 .NET Framework 中的集合类型的基础。任何实现了 IEnumerable 接口的对象都可以进行 foreach 迭代。 IEnumerable 只有一个方法&#xff0c;即 GetEnumerator&#xff0c;该方法返回一个 IEnumerator 对象。IEnumerator 对象用…...

九洲

《九洲》 作者&#xff0f;罗光记 九洲春色映朝阳&#xff0c; 洲渚风光似画廊。 柳絮飘飞花似雪&#xff0c; 九州繁华共锦裳。 水波荡漾鱼儿跃&#xff0c; 洲边鸟语唤晨光。 春风拂过千里岸&#xff0c; 九洲儿女笑语扬。...

基于Genio 700 (MT8390)芯片的AR智能眼镜方案

AR眼镜是一种具有前所未有发展机遇的设备&#xff0c;无论是显示效果、体积还是功能都有明显的提升。AR技术因其智能、实时、三维、多重交互和开放世界的特点备受关注。 AR眼镜集成了AR技术、语音识别、智能控制等多项高科技功能&#xff0c;可以帮助用户实现更加便捷、高效、个…...

锐捷OSPF认证

一、知识补充 1、基本概述 OSPF区域认证和端口认证是两种不同的认证机制&#xff0c;用于增强OSPF协议的安全性。 OSPF区域认证&#xff08;OSPF Area Authentication&#xff09;&#xff1a;这种认证机制是基于区域的。在OSPF网络中&#xff0c;每个区域都可以配置一个区域…...

M2 Mac Xcode编译报错 ‘***.framework/‘ for architecture arm64

In /Users/fly/Project/Pods/YYKit/Vendor/WebP.framework/WebP(anim_decode.o), building for iOS Simulator, but linking in object file built for iOS, file /Users/fly/Project/Pods/YYKit/Vendor/WebP.framework/WebP for architecture arm64 这是我当时编译模拟器时报…...

Python算法题2023 输出123456789到98765432中完全不包含2023的数有多少

题目&#xff1a; 无输入&#xff0c;只需输出结果&#x1f910; 这个数字比较大&#xff0c;小伙伴们运行的时候要给代码一点耐心嗷つ﹏⊂ &#xff0c;下面是思路&#xff0c;代码注释也很详细&#xff0c;大致看一下吧&#xff08;&#xff3e;∀&#xff3e;●&#xff09…...

SpringBoot整合Thymeleaf

Thymeleaf 支持 HTML 原型&#xff0c;可以让前端工程师在浏览器中直接打开查看样式&#xff0c;也可以让后端工程师结合真实数据查看显示效果 Thymeleaf 除了展示基本的 HTML &#xff0c;进行页面渲染之外&#xff0c;也可以作为一个 HTML 片段进行渲染&#xff0c;例如我们在…...

OpenAI的多函数调用(Multiple Function Calling)简介

我在六月份写了一篇关于GPT 函数调用&#xff08;Function calling) 的博客https://blog.csdn.net/xindoo/article/details/131262670&#xff0c;其中介绍了函数调用的方法&#xff0c;但之前的函数调用&#xff0c;在一轮对话中只能调用一个函数。就在上周&#xff0c;OpenAI…...

在国内购买GPT服务前的一定要注意!!!

本人已经入坑GPT多日&#xff0c;从最开始的应用GPT到现在的自己研发GPT&#xff0c;聊聊我对使用ChatGPT的一些思考&#xff0c;有需要使用GPT的朋友或者正在使用GPT的朋友&#xff0c;一定要看完这篇文章&#xff0c;可能会比较露骨&#xff0c;也算是把国内知识库、AI的套路…...

Redis新操作

1.Bitmaps 1.1概述 Bitmaps可以对位进行操作&#xff0c;实际上它就是一个字符串&#xff0c;可以将Bitmaps想象为一个以位为单位的数组&#xff0c;数组中的每个元素只能存储0或者1&#xff0c;数组的下标在Bitmaps被称为偏移量。 setbit key offset value&#xff1a;设置o…...

网络编程(Modbus进阶)

思维导图 Modbus RTU&#xff08;先学一点理论&#xff09; 概念 Modbus RTU 是工业自动化领域 最广泛应用的串行通信协议&#xff0c;由 Modicon 公司&#xff08;现施耐德电气&#xff09;于 1979 年推出。它以 高效率、强健性、易实现的特点成为工业控制系统的通信标准。 包…...

反向工程与模型迁移:打造未来商品详情API的可持续创新体系

在电商行业蓬勃发展的当下&#xff0c;商品详情API作为连接电商平台与开发者、商家及用户的关键纽带&#xff0c;其重要性日益凸显。传统商品详情API主要聚焦于商品基本信息&#xff08;如名称、价格、库存等&#xff09;的获取与展示&#xff0c;已难以满足市场对个性化、智能…...

Golang dig框架与GraphQL的完美结合

将 Go 的 Dig 依赖注入框架与 GraphQL 结合使用&#xff0c;可以显著提升应用程序的可维护性、可测试性以及灵活性。 Dig 是一个强大的依赖注入容器&#xff0c;能够帮助开发者更好地管理复杂的依赖关系&#xff0c;而 GraphQL 则是一种用于 API 的查询语言&#xff0c;能够提…...

全球首个30米分辨率湿地数据集(2000—2022)

数据简介 今天我们分享的数据是全球30米分辨率湿地数据集&#xff0c;包含8种湿地亚类&#xff0c;该数据以0.5X0.5的瓦片存储&#xff0c;我们整理了所有属于中国的瓦片名称与其对应省份&#xff0c;方便大家研究使用。 该数据集作为全球首个30米分辨率、覆盖2000–2022年时间…...

微信小程序 - 手机震动

一、界面 <button type"primary" bindtap"shortVibrate">短震动</button> <button type"primary" bindtap"longVibrate">长震动</button> 二、js逻辑代码 注&#xff1a;文档 https://developers.weixin.qq…...

第25节 Node.js 断言测试

Node.js的assert模块主要用于编写程序的单元测试时使用&#xff0c;通过断言可以提早发现和排查出错误。 稳定性: 5 - 锁定 这个模块可用于应用的单元测试&#xff0c;通过 require(assert) 可以使用这个模块。 assert.fail(actual, expected, message, operator) 使用参数…...

DIY|Mac 搭建 ESP-IDF 开发环境及编译小智 AI

前一阵子在百度 AI 开发者大会上&#xff0c;看到基于小智 AI DIY 玩具的演示&#xff0c;感觉有点意思&#xff0c;想着自己也来试试。 如果只是想烧录现成的固件&#xff0c;乐鑫官方除了提供了 Windows 版本的 Flash 下载工具 之外&#xff0c;还提供了基于网页版的 ESP LA…...

令牌桶 滑动窗口->限流 分布式信号量->限并发的原理 lua脚本分析介绍

文章目录 前言限流限制并发的实际理解限流令牌桶代码实现结果分析令牌桶lua的模拟实现原理总结&#xff1a; 滑动窗口代码实现结果分析lua脚本原理解析 限并发分布式信号量代码实现结果分析lua脚本实现原理 双注解去实现限流 并发结果分析&#xff1a; 实际业务去理解体会统一注…...

什么是EULA和DPA

文章目录 EULA&#xff08;End User License Agreement&#xff09;DPA&#xff08;Data Protection Agreement&#xff09;一、定义与背景二、核心内容三、法律效力与责任四、实际应用与意义 EULA&#xff08;End User License Agreement&#xff09; 定义&#xff1a; EULA即…...

Java多线程实现之Thread类深度解析

Java多线程实现之Thread类深度解析 一、多线程基础概念1.1 什么是线程1.2 多线程的优势1.3 Java多线程模型 二、Thread类的基本结构与构造函数2.1 Thread类的继承关系2.2 构造函数 三、创建和启动线程3.1 继承Thread类创建线程3.2 实现Runnable接口创建线程 四、Thread类的核心…...