C++,stl,set/mutiset详解

目录

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.hqwc.cn/news/466311.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

android中使用Bitmp对象绘制图形

1、引言 你是否还在因为不懂UI设计而不得不去借用别人的图片&#xff0c;甚至使用各种网图作为界面布局的一部分&#xff0c;那么今天就教你使用Bitmap对象去绘制自定义图形&#xff0c;并保存为png格式的图片&#xff0c;须知图片编辑软件本就是程序员开发出来的&#xff0c;我…

力扣细节题:二叉树前序遍历

细节一&#xff1a;题目在note部分提示我们要使用malloc函数去创建数组&#xff0c;因为它没有提供给我们数组&#xff0c;而题目中的指针returnsize提醒我们这是一个变量进行传址操作用于释放之前malloc的空间&#xff0c;粗暴地按题目范围malloc空间会报错&#xff0c;所以必…

java数据结构与算法刷题-----LeetCode594. 最长和谐子序列

java数据结构与算法刷题目录&#xff08;剑指Offer、LeetCode、ACM&#xff09;-----主目录-----持续更新(进不去说明我没写完)&#xff1a;https://blog.csdn.net/grd_java/article/details/123063846 解题思路 子序列要尽可能长&#xff0c;并且最大值和最小值之间的差&#…

【数据结构】哈希表的开散列和闭散列模拟

哈希思想 在顺序和树状结构中&#xff0c;元素的存储与其存储位置之间是没有对应关系&#xff0c;因此在查找一个元素时&#xff0c;必须要经过多次的比较。 顺序查找的时间复杂度为0(N)&#xff0c;树的查找时间复杂度为log(N)。 我们最希望的搜索方式&#xff1a;通过元素…

磁盘分区和挂载

一、分区概念 1、基本概念 (1) 一块硬盘最多只能有4个主分区 (2) 其中一个(且最多只能有一个)主分区能作为扩展分区,而扩展分区不能写入数据,只能包含逻辑分区 2、格式化 分区之后的磁盘并不能直接使用&#xff0c;而是需要先进行格式化&#xff0c;又称为逻辑格式化。它是指…

2024牛客寒假算法基础集训营2

C Tokitsukaze and Min-Max XOR 题目大意 给定一个数组从任取数构成序列序列满足&#xff0c;&#xff08;可以只取一个数&#xff09;问能构造出多少个 解题思路 定找双枚举时间复杂度到&#xff0c;考虑利用加速统计的方案&#xff0c;即将数字按二进制位拆分挂在树上对于…

【学网攻】 第(26)节 -- 综合网络实验一

系列文章目录 目录 系列文章目录 文章目录 前言 一、综合实验 二、实验 1.引入 实验目标 实验设备 实验拓扑图 实验配置 文章目录 【学网攻】 第(1)节 -- 认识网络【学网攻】 第(2)节 -- 交换机认识及使用【学网攻】 第(3)节 -- 交换机配置聚合端口【学网攻】 第(4)节…

【通讯录案例-保存开关状态 Objective-C语言】

一、接下来,我们要实现一个什么功能呢,在这个,我们的“通讯录”里边儿, 1.我们有两个开关,“记住密码”、“自动登录”、两个开关, 如果我们点击“记住密码”, 如果我们点击“记住密码”,然后呢,我把这个程序关了,我下一次再打开这个程序的时候,这个用户名和密码,…

【粉丝福利社】Flutter小白开发——跨平台客户端应用开发学习路线(文末送书-完结)

&#x1f3c6; 作者简介&#xff0c;愚公搬代码 &#x1f3c6;《头衔》&#xff1a;华为云特约编辑&#xff0c;华为云云享专家&#xff0c;华为开发者专家&#xff0c;华为产品云测专家&#xff0c;CSDN博客专家&#xff0c;CSDN商业化专家&#xff0c;阿里云专家博主&#xf…

Linux第48步_编译正点原子的出厂Linux内核源码

编译正点原子的出厂 Linux 内核源码&#xff0c;为后面移植linux做准备。研究对象如下&#xff1a; 1)、linux内核镜像文件“uImage” 路径为“arch/arm/boot”&#xff1b; 2)、设备树文件“stm32mp157d-atk.dtb” 路径为“arch/arm/boot/dts” 3)、默认配置文件“stm32m…

IDEA Ultimate下载(采用JetBrain学生认证)

IDEA Ultimate版本下载 Ulitmate是无限制版&#xff08;解锁所有插件&#xff0c;正版需要付费。学生可以免费申请许可&#xff09;Community是开源社区版本&#xff08;部分插件不提供使用&#xff0c;比如Tomcat插件。免费&#xff09; 我们将通过学生认证获取免费版。 Je…

线性判别分析(LDA)

一、说明 LDA 是一种监督降维和分类技术。其主要目的是查找最能分隔数据集中两个或多个类的特征的线性组合。LDA 的主要目标是找到一个较低维度的子空间&#xff0c;该子空间可以最大限度地区分不同类别&#xff0c;同时保留与歧视相关的信息。 LDA 是受监督的&#xff0c;这意…