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,是Openai退出的基于GPT模型的新一代 AI助手,可以帮助解决我们在多个领域的问题。但是你会发现,在某些问题上,ChatGPT 需要经过不断的调教与沟通,才能得到接近正确的答案。对于你不太了解的领域领域&…...
ProtocolBuffers(protobuf)详解
目录 前言特点语法定义关键字JSON与Protocol Buffers互相转换gRPC与Protocol Buffers的关系 前言 Protocol Buffers(通常简称为protobuf)是Google公司开发的一种数据描述语言,它能够将结构化数据序列化,可用于数据存储、通信协议…...
HTTP 到 HTTPS 再到 HSTS 的转变
近些年,随着域名劫持、信息泄漏等网络安全事件的频繁发生,网站安全也变得越来越重要,也促成了网络传输协议从 HTTP 到 HTTPS 再到 HSTS 的转变。 HTTP HTTP(超文本传输协议) 是一种用于分布式、协作式和超媒体信息系…...
清华学霸告诉你:如何自学人工智能?
清华大学作为中国顶尖的学府之一,培养了许多优秀的人才,其中不乏在人工智能领域有所成就的学霸。通过一位清华学霸的经验分享,揭示如何自学人工智能,帮助你在这场科技浪潮中勇往直前。 一、夯实基础知识 数学基础:学习…...
Ubuntu 安装VMware Tools选项显示灰色,如何安装VMware Tools
切换apt源为阿里云: https://qq742971636.blog.csdn.net/article/details/134291339 只要你的网络没问题,你直接执行这几个命令,重启ubuntu虚拟机即可、 sudo dpkg --configure -a sudo apt-get autoremove open-vm-tools sudo apt-get ins…...
SpringBoot 2.x 实战仿B站高性能后端项目
SpringBoot 2.x 实战仿B站高性能后端项目 下栽の地止:请看文章末尾 通常SpringBoot新建项目,默认是集成了Maven,然后所有内容都在一个主模块中。 如果项目架构稍微复杂一点,就需要用到Maven多模块。 本文简单概述一下,…...
vscode文件夹折叠问题
今天发现一个vscode的文件夹显示的问题,首先是这样的,就是我的文件夹里又一个子文件夹,子文件夹里有一些文件,但是我发现无法折叠起这个子文件夹,总是显示全部的文件,这让我备份很难,具体参考 h…...
4-flask-cbv源码、Jinja2模板、请求响应、flask中的session、flask项目参考
1 flask中cbv源码 2 Jinja2模板 3 请求响应 4 flask中的session 5 flask项目参考 1 flask中cbv源码 ***flask的官网文档:***https://flask.palletsprojects.com/en/3.0.x/views/1 cbv源码执行流程1 请求来了,路由匹配成功---》执行ItemAPI.as_view(item…...
2.Pandas数据预处理
2.1 数据清洗 以titanic数据为例。 df pd.read_csv(titanic.csv) 2.1.1 缺失值 (1)缺失判断 df.isnull() (2)缺失统计 # 列缺失统计 df.isnull().sum(axis0) # 行缺失统计 df.isnull().sum(axis1) # 统计缺失率 df.isnu…...
C# IEnumerable<T>介绍
IEnumerable 是 C# 中的一个接口,它是 .NET Framework 中的集合类型的基础。任何实现了 IEnumerable 接口的对象都可以进行 foreach 迭代。 IEnumerable 只有一个方法,即 GetEnumerator,该方法返回一个 IEnumerator 对象。IEnumerator 对象用…...
九洲
《九洲》 作者/罗光记 九洲春色映朝阳, 洲渚风光似画廊。 柳絮飘飞花似雪, 九州繁华共锦裳。 水波荡漾鱼儿跃, 洲边鸟语唤晨光。 春风拂过千里岸, 九洲儿女笑语扬。...
基于Genio 700 (MT8390)芯片的AR智能眼镜方案
AR眼镜是一种具有前所未有发展机遇的设备,无论是显示效果、体积还是功能都有明显的提升。AR技术因其智能、实时、三维、多重交互和开放世界的特点备受关注。 AR眼镜集成了AR技术、语音识别、智能控制等多项高科技功能,可以帮助用户实现更加便捷、高效、个…...
锐捷OSPF认证
一、知识补充 1、基本概述 OSPF区域认证和端口认证是两种不同的认证机制,用于增强OSPF协议的安全性。 OSPF区域认证(OSPF Area Authentication):这种认证机制是基于区域的。在OSPF网络中,每个区域都可以配置一个区域…...
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的数有多少
题目: 无输入,只需输出结果🤐 这个数字比较大,小伙伴们运行的时候要给代码一点耐心嗷つ﹏⊂ ,下面是思路,代码注释也很详细,大致看一下吧(^∀^●)…...
SpringBoot整合Thymeleaf
Thymeleaf 支持 HTML 原型,可以让前端工程师在浏览器中直接打开查看样式,也可以让后端工程师结合真实数据查看显示效果 Thymeleaf 除了展示基本的 HTML ,进行页面渲染之外,也可以作为一个 HTML 片段进行渲染,例如我们在…...
OpenAI的多函数调用(Multiple Function Calling)简介
我在六月份写了一篇关于GPT 函数调用(Function calling) 的博客https://blog.csdn.net/xindoo/article/details/131262670,其中介绍了函数调用的方法,但之前的函数调用,在一轮对话中只能调用一个函数。就在上周,OpenAI…...
在国内购买GPT服务前的一定要注意!!!
本人已经入坑GPT多日,从最开始的应用GPT到现在的自己研发GPT,聊聊我对使用ChatGPT的一些思考,有需要使用GPT的朋友或者正在使用GPT的朋友,一定要看完这篇文章,可能会比较露骨,也算是把国内知识库、AI的套路…...
Redis新操作
1.Bitmaps 1.1概述 Bitmaps可以对位进行操作,实际上它就是一个字符串,可以将Bitmaps想象为一个以位为单位的数组,数组中的每个元素只能存储0或者1,数组的下标在Bitmaps被称为偏移量。 setbit key offset value:设置o…...
线程同步:确保多线程程序的安全与高效!
全文目录: 开篇语前序前言第一部分:线程同步的概念与问题1.1 线程同步的概念1.2 线程同步的问题1.3 线程同步的解决方案 第二部分:synchronized关键字的使用2.1 使用 synchronized修饰方法2.2 使用 synchronized修饰代码块 第三部分ÿ…...
vue3 字体颜色设置的多种方式
在Vue 3中设置字体颜色可以通过多种方式实现,这取决于你是想在组件内部直接设置,还是在CSS/SCSS/LESS等样式文件中定义。以下是几种常见的方法: 1. 内联样式 你可以直接在模板中使用style绑定来设置字体颜色。 <template><div :s…...
GitHub 趋势日报 (2025年06月08日)
📊 由 TrendForge 系统生成 | 🌐 https://trendforge.devlive.org/ 🌐 本日报中的项目描述已自动翻译为中文 📈 今日获星趋势图 今日获星趋势图 884 cognee 566 dify 414 HumanSystemOptimization 414 omni-tools 321 note-gen …...
用docker来安装部署freeswitch记录
今天刚才测试一个callcenter的项目,所以尝试安装freeswitch 1、使用轩辕镜像 - 中国开发者首选的专业 Docker 镜像加速服务平台 编辑下面/etc/docker/daemon.json文件为 {"registry-mirrors": ["https://docker.xuanyuan.me"] }同时可以进入轩…...
在WSL2的Ubuntu镜像中安装Docker
Docker官网链接: https://docs.docker.com/engine/install/ubuntu/ 1、运行以下命令卸载所有冲突的软件包: for pkg in docker.io docker-doc docker-compose docker-compose-v2 podman-docker containerd runc; do sudo apt-get remove $pkg; done2、设置Docker…...
Unity | AmplifyShaderEditor插件基础(第七集:平面波动shader)
目录 一、👋🏻前言 二、😈sinx波动的基本原理 三、😈波动起来 1.sinx节点介绍 2.vertexPosition 3.集成Vector3 a.节点Append b.连起来 4.波动起来 a.波动的原理 b.时间节点 c.sinx的处理 四、🌊波动优化…...
使用 SymPy 进行向量和矩阵的高级操作
在科学计算和工程领域,向量和矩阵操作是解决问题的核心技能之一。Python 的 SymPy 库提供了强大的符号计算功能,能够高效地处理向量和矩阵的各种操作。本文将深入探讨如何使用 SymPy 进行向量和矩阵的创建、合并以及维度拓展等操作,并通过具体…...
【7色560页】职场可视化逻辑图高级数据分析PPT模版
7种色调职场工作汇报PPT,橙蓝、黑红、红蓝、蓝橙灰、浅蓝、浅绿、深蓝七种色调模版 【7色560页】职场可视化逻辑图高级数据分析PPT模版:职场可视化逻辑图分析PPT模版https://pan.quark.cn/s/78aeabbd92d1...
AI病理诊断七剑下天山,医疗未来触手可及
一、病理诊断困局:刀尖上的医学艺术 1.1 金标准背后的隐痛 病理诊断被誉为"诊断的诊断",医生需通过显微镜观察组织切片,在细胞迷宫中捕捉癌变信号。某省病理质控报告显示,基层医院误诊率达12%-15%,专家会诊…...
uniapp 实现腾讯云IM群文件上传下载功能
UniApp 集成腾讯云IM实现群文件上传下载功能全攻略 一、功能背景与技术选型 在团队协作场景中,群文件共享是核心需求之一。本文将介绍如何基于腾讯云IMCOS,在uniapp中实现: 群内文件上传/下载文件元数据管理下载进度追踪跨平台文件预览 二…...
