C++,stl,set/mutiset详解

news2025/1/23 3:50:19

目录

1.set容器的构造和赋值

2.set的大小和交换 

3.set的插入和删除

4.set的查找和统计

5.set和mutiset区别 

 6.pair对组的创建

7.set排序 

1.set的内置类型指定排序规则

2.set的自定义数据类型指定排序 


1.set容器的构造和赋值

#include<bits/stdc++.h>
using namespace std;

void print(set<int> &s)
{
	for(set<int>::iterator it = s.begin(); it != s.end(); it++)
	{
		cout << *it << " ";
	}
	cout << endl;
}

int main()
{
	set<int> s;
	
	s.insert(7);
	s.insert(3);
	s.insert(9);
	s.insert(3);
	s.insert(6);
	
	print(s);
	
	set<int>s1(s);
	print(s1);
	
	set<int>s2;
	s2 = s1;
	print(s2);
	
	return 0;
}

 

2.set的大小和交换 

#include<bits/stdc++.h>
using namespace std;

void print(set<int> &s)
{
	for(set<int>::iterator it = s.begin(); it != s.end(); it++)
	{
		cout << *it << " ";
	}
	cout << endl;
}

int main()
{
	set<int> s;
	
	s.insert(7);
	s.insert(3);
	s.insert(9);
	s.insert(3);
	s.insert(6);
	
	print(s);
	
	cout << s.empty() << endl;
	cout << s.size() << endl;
	
	set<int>s1;
	s1.swap(s);
	print(s1);
	
	return 0;
}

 

3.set的插入和删除

 

#include<bits/stdc++.h>
using namespace std;

void print(set<int> &s)
{
	for(set<int>::iterator it = s.begin(); it != s.end(); it++)
	{
		cout << *it << " ";
	}
	cout << endl;
}

int main()
{
	set<int> s;
	
	s.insert(7);
	s.insert(3);
	s.insert(9);
	s.insert(3);
	s.insert(6);
	
	print(s);
	
	s.erase(s.begin());
	//删除删的是排序后那个下标所在的位置的值
	print(s);
	
	s.erase(6);
	//也可以直接删除你想删的那个值
	print(s);
	
	s.clear();
	print(s);
	
	return 0;
}

 

4.set的查找和统计

 

#include<bits/stdc++.h>
using namespace std;

void print(set<int> &s)
{
	for(set<int>::iterator it = s.begin(); it != s.end(); it++)
	{
		cout << *it << " ";
	}
	cout << endl;
}

int main()
{
	set<int> s;
	
	s.insert(7);
	s.insert(3);
	s.insert(9);
	s.insert(3);
	s.insert(6);
	
	print(s);
	
	set<int>::iterator pos = s.find(6);
	
	if(pos != s.end()) cout << "找到了" << *pos << endl;
	
	cout << s.count(9) << endl;
	
	return 0;
}

 

5.set和mutiset区别 

 

#include<bits/stdc++.h>
using namespace std;

void print(set<int> &s)
{
	for(set<int>::iterator it = s.begin(); it != s.end(); it++)
	{
		cout << *it << " ";
	}
	cout << endl;
}

int main()
{
	set<int> s;
	
	pair<set<int>::iterator,bool> ret = s.insert(7);
	
	cout << ret.second << endl;
	
	ret = s.insert(7);
	cout << ret.second << endl;
	//说明第一次插入成功,而第二次插入失败
	//而mutiset里却可以插入重复的值
	
	return 0;
}

 

 6.pair对组的创建

#include<bits/stdc++.h>
using namespace std;

void print(set<int> &s)
{
	for(set<int>::iterator it = s.begin(); it != s.end(); it++)
	{
		cout << *it << " ";
	}
	cout << endl;
}

int main()
{
	set<int> s;
	
	pair<string,int>p1("avent",100);
	cout << p1.first << " " << p1.second << endl;
	
	pair<string,int>p2 = make_pair("misha",12);
	cout << p2.first << " " <<p2.second;
	
	return 0;
}

 

7.set排序 

1.set的内置类型指定排序规则

 

#include<bits/stdc++.h>
using namespace std;

void print(set<int> &s)
{
	for(set<int>::iterator it = s.begin(); it != s.end(); it++)
	{
		cout << *it << " ";
	}
	cout << endl;
}

class cmp
{
public:
	bool operator()(int v1,int v2)
	{
		return v1 > v2;
	}
};

int main()
{
	set<int> s;
	
	s.insert(10);
	s.insert(80);
	s.insert(200);
	s.insert(90);
	s.insert(180);
	
	print(s);
	
	set<int,cmp> s1;
	
	s1.insert(10);
	s1.insert(80);
	s1.insert(200);
	s1.insert(90);
	s1.insert(180);
	
	for(set<int,cmp>::iterator it = s1.begin(); it != s1.end(); it++)
	{
		cout << *it << " ";
	}
	cout << endl;
	
	return 0;
}

 

2.set的自定义数据类型指定排序 

 

#include<bits/stdc++.h>
using namespace std;

class person
{
public:
	person(int a,int b)
	{
		ma = a;
		mb = b;
	}
	int ma;
	int mb;
};

class cmp
{
public:
	bool operator()(const person &p1,const person &p2)
	{
		if(p1.ma == p2.ma) return p1.mb < p2.mb;
		else return p1.ma < p2.ma;
	}
};

int main()
{
	set<person,cmp> s;
	
	person p1(10,100);
	person p2(20,200);
	person p3(10,200);
	
	s.insert(p1);
	s.insert(p2);
	s.insert(p3);
	
	for(set<person,cmp>::iterator it = s.begin(); it != s.end(); it++)
	{
		cout << (*it).ma << " " << (*it).mb << " " << endl;
	}
	
	return 0;
}

 

 

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

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

相关文章

Ps:统计

Ps菜单&#xff1a;文件/脚本/统计 Scripts/Statistics 统计 Statistics脚本命令提供了一种高效的方法来处理和分析大量图像&#xff0c;使用户能够自动执行复杂的图像分析任务&#xff0c;并在多个图像间应用统计学方法。这个功能极大地扩展了 Photoshop 在科学研究、图像编辑…

论文介绍 VolumeDiffusion

论文介绍 VolumeDiffusion: Flexible Text-to-3D Generation with Efficient Volumetric Encoder 关注微信公众号: DeepGo 源码地址&#xff1a; https://github.com/tzco/VolumeDiffusion 论文地址&#xff1a; https://arxiv.org/abs/2312.11459 VolumeDiffusion模型是一个从…

分享85个jQuery特效,总有一款适合您

分享85个jQuery特效&#xff0c;总有一款适合您 85个jQuery特效下载链接&#xff1a;https://pan.baidu.com/s/1-n18tdXFuTyYBvGOU94lIQ?pwd8888 提取码&#xff1a;8888 Python采集代码下载链接&#xff1a;采集代码.zip - 蓝奏云 学习知识费力气&#xff0c;收集整理更不…

数制和码制

目录 几种常见的数制 数制 基数 位权 常见的四种数制 十进制数 二进制数 八进制数 十六进制数 不同进制数的相互转换 例如 例如 编码 二-十进制码 例如 格雷码 例如 原码、反码和补码 几种常见的数制 关键术语 数制&#xff1a;以一组固定的符号和统一的规则来表示数值…

###51单片机学习(1)-----单片机烧录软件的使用,以及如何建立一个工程项目

前言&#xff1a;感谢您的关注哦&#xff0c;我会持续更新编程相关知识&#xff0c;愿您在这里有所收获。如果有任何问题&#xff0c;欢迎沟通交流&#xff01;期待与您在学习编程的道路上共同进步。 一. 两个主要软件的介绍 1.KeiluVision5软件 Keil uVision5是一款集成开发…

Vue中 常用的修饰符有哪些

Vue是一款建立在JavaScript框架上的开源前端库&#xff0c;已经成为当今前端开发人员最喜爱的选择之一。它的简洁语法和强大的功能使得开发者可以轻松地构建交互性的网页应用程序。在Vue中&#xff0c;修饰符是一个重要的概念&#xff0c;它们可以帮助我们更好地控制和定制DOM元…

python多线程连接MySQL查数案例

该博文展示地是基本示例&#xff0c;实际使用时可能需要进行调整。例如&#xff0c;你可能需要添加错误处理来确保数据库连接问题不会导致脚本崩溃&#xff0c;或者你可能需要调整查询以匹配你的数据。 此外&#xff0c;你需要确保你的系统有足够的内存和处理能力来支持并行处理…

Mysql-数据库压力测试

安装软件 官方软件 安装插件提供了更多的监听器选项 数据库驱动 数据库测试 配置 这里以一个简单的案例进行&#xff0c;进行连接池为10,20,30的梯度压测&#xff1a; select * from tb_order_item where id 1410932957404114945;新建一个线程组 新增一个连接池配置 新建一…

用HTML5 + JavaScript绘制花、树

用HTML5 JavaScript绘制花、树 <canvas>是一个可以使用脚本 (通常为JavaScript) 来绘制图形的 HTML 元素。 <canvas> 标签/元素只是图形容器&#xff0c;必须使用脚本来绘制图形。 HTML5 canvas 图形标签基础https://blog.csdn.net/cnds123/article/details/112…

【动态规划】【数学】【C++算法】1449. 数位成本和为目标值的最大数字

作者推荐 【深度优先搜索】【树】【图论】2973. 树中每个节点放置的金币数目 本文涉及知识点 动态规划汇总 LeetCode1449. 数位成本和为目标值的最大数字 给你一个整数数组 cost 和一个整数 target 。请你返回满足如下规则可以得到的 最大 整数&#xff1a; 给当前结果添加…

前端面试题——二叉树遍历

前言 二叉树遍历在各种算法和数据结构问题中都有广泛的应用&#xff0c;如二叉搜索树、表达式的树形表示、堆的实现等。同时也是前端面试中的常客&#xff0c;掌握好二叉树遍历算法对于一名合格的前端工程师来说至关重要。 概念 二叉树遍历&#xff08;Binary Tree Traversa…

【c语言】字符串常见函数 上

&#x1f388;个人主页&#xff1a;甜美的江 &#x1f389;欢迎 &#x1f44d;点赞✍评论⭐收藏 &#x1f917;收录专栏&#xff1a;c语言 &#x1f91d;希望本文对您有所裨益&#xff0c;如有不足之处&#xff0c;欢迎在评论区提出指正&#xff0c;让我们共同学习、交流进步&a…

鸿蒙开发第3篇__大数据量的列表加载性能优化

列表 是最常用到的组件 一 ForEach 渲染控制语法————Foreach Foreach的作用 遍历数组项&#xff0c;并创建相同的布局组件块在组件加载时&#xff0c; 将数组内容数据全部创建对应的组件内容&#xff0c; 渲染到页面上 const swiperImage: Resource[] {$r("app.me…

Linux中FIFO管道

介绍&#xff1a; FIFO被称为命名管道&#xff0c;pipe只能用于有血缘关系的进程间通信&#xff0c;但通过FIFO&#xff0c;不相关的进程也可以进程间通信。 FIFO是linux基础文件类型的一种&#xff08;文件类型为p&#xff09;&#xff0c;FIFO文件在磁盘上没有数据块&#…

【Java八股面试系列】JVM-类和对象加载过程

目录 类和对象的加载过程 类的生命周期 类的加载过程 加载 验证 准备 解析 初始化 类卸载 对象的加载过程 类和对象的加载过程 什么是类加载和对象加载? 类加载&#xff08;Class Loading&#xff09;&#xff1a;这是指JVM在运行时将类的字节码文件加载到内存中的…

2000-2021年县域指标统计数据库

2000-2021年县域统计数据库 1、时间&#xff1a;2000-2021年 2、来源&#xff1a;县域统计年鉴 3、范围&#xff1a;2500县 5、指标&#xff1a; 地区名称、年份、行政区域代码、所属城市、所属省份、行政区域土地面积平方公里、乡及镇个数个、乡个数个、镇个数个、街道办…

【数据结构】13:表达式转换(中缀表达式转成后缀表达式)

思想&#xff1a; 从头到尾依次读取中缀表达式里的每个对象&#xff0c;对不同对象按照不同的情况处理。 如果遇到空格&#xff0c;跳过如果遇到运算数字&#xff0c;直接输出如果遇到左括号&#xff0c;压栈如果遇到右括号&#xff0c;表示括号里的中缀表达式已经扫描完毕&a…

物联网和工业4.0

在当今这个快速发展的技术时代&#xff0c;物联网&#xff08;IoT&#xff09;和工业4.0成为了推动全球进入新工业时代的两大驱动力。对于刚入行的人来说&#xff0c;深入理解这两个概念及其背后的技术原理&#xff0c;对于把握未来的职业机会至关重要。 物联网&#xff0c;简…

【JavaEE】_CSS常用属性

目录 1. 字体属性 1.1 设置字体家族 font-family 1.2 设置字体大小 font-size 1.3 设置字体粗细 font-weight 1.4 设置字体倾斜 font-style 2. 文本属性 2.1 设置文本颜色 color 2.2 文本对齐 text-align 2.3 文本装饰 text-decoration 2.4 文本缩进 text-indent 2.…

java+SSM+Mysql学院教室管理系统81671-计算机毕业设计项目选题推荐(免费领源码)

摘 要 随着科学技术的飞速发展&#xff0c;社会的方方面面、各行各业都在努力与现代的先进技术接轨&#xff0c;通过科技手段来提高自身的优势&#xff0c;山西能源学院教室管理系统当然也不能排除在外。山西能源学院教室管理系统是以实际运用为开发背景&#xff0c;运用软件工…