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…...
Java如何权衡是使用无序的数组还是有序的数组
在 Java 中,选择有序数组还是无序数组取决于具体场景的性能需求与操作特点。以下是关键权衡因素及决策指南: ⚖️ 核心权衡维度 维度有序数组无序数组查询性能二分查找 O(log n) ✅线性扫描 O(n) ❌插入/删除需移位维护顺序 O(n) ❌直接操作尾部 O(1) ✅内存开销与无序数组相…...

visual studio 2022更改主题为深色
visual studio 2022更改主题为深色 点击visual studio 上方的 工具-> 选项 在选项窗口中,选择 环境 -> 常规 ,将其中的颜色主题改成深色 点击确定,更改完成...
AtCoder 第409场初级竞赛 A~E题解
A Conflict 【题目链接】 原题链接:A - Conflict 【考点】 枚举 【题目大意】 找到是否有两人都想要的物品。 【解析】 遍历两端字符串,只有在同时为 o 时输出 Yes 并结束程序,否则输出 No。 【难度】 GESP三级 【代码参考】 #i…...
python爬虫:Newspaper3k 的详细使用(好用的新闻网站文章抓取和解析的Python库)
更多内容请见: 爬虫和逆向教程-专栏介绍和目录 文章目录 一、Newspaper3k 概述1.1 Newspaper3k 介绍1.2 主要功能1.3 典型应用场景1.4 安装二、基本用法2.2 提取单篇文章的内容2.2 处理多篇文档三、高级选项3.1 自定义配置3.2 分析文章情感四、实战案例4.1 构建新闻摘要聚合器…...

ETLCloud可能遇到的问题有哪些?常见坑位解析
数据集成平台ETLCloud,主要用于支持数据的抽取(Extract)、转换(Transform)和加载(Load)过程。提供了一个简洁直观的界面,以便用户可以在不同的数据源之间轻松地进行数据迁移和转换。…...

ElasticSearch搜索引擎之倒排索引及其底层算法
文章目录 一、搜索引擎1、什么是搜索引擎?2、搜索引擎的分类3、常用的搜索引擎4、搜索引擎的特点二、倒排索引1、简介2、为什么倒排索引不用B+树1.创建时间长,文件大。2.其次,树深,IO次数可怕。3.索引可能会失效。4.精准度差。三. 倒排索引四、算法1、Term Index的算法2、 …...

零基础设计模式——行为型模式 - 责任链模式
第四部分:行为型模式 - 责任链模式 (Chain of Responsibility Pattern) 欢迎来到行为型模式的学习!行为型模式关注对象之间的职责分配、算法封装和对象间的交互。我们将学习的第一个行为型模式是责任链模式。 核心思想:使多个对象都有机会处…...
Java入门学习详细版(一)
大家好,Java 学习是一个系统学习的过程,核心原则就是“理论 实践 坚持”,并且需循序渐进,不可过于着急,本篇文章推出的这份详细入门学习资料将带大家从零基础开始,逐步掌握 Java 的核心概念和编程技能。 …...
汇编常见指令
汇编常见指令 一、数据传送指令 指令功能示例说明MOV数据传送MOV EAX, 10将立即数 10 送入 EAXMOV [EBX], EAX将 EAX 值存入 EBX 指向的内存LEA加载有效地址LEA EAX, [EBX4]将 EBX4 的地址存入 EAX(不访问内存)XCHG交换数据XCHG EAX, EBX交换 EAX 和 EB…...
爬虫基础学习day2
# 爬虫设计领域 工商:企查查、天眼查短视频:抖音、快手、西瓜 ---> 飞瓜电商:京东、淘宝、聚美优品、亚马逊 ---> 分析店铺经营决策标题、排名航空:抓取所有航空公司价格 ---> 去哪儿自媒体:采集自媒体数据进…...