C++ //set/multiset 容器 //set不可以插入重复的数字 multiset可以插入重复的数字 //ste容器构造和赋值 //set大小和交换 //set 插入和删除 //set查找和统计 //set 和 multiset 区别 //pair 对组创建 //set存放自定义数据类型 //set内置数据 进行排序
1 //set/multiset 容器 //set不可以插入重复的数字 multiset可以插入重复的数字
2 //ste容器构造和赋值 //set大小和交换 //set 插入和删除
3 //set查找和统计 //set 和 multiset 区别
4 //pair 对组创建 //set存放自定义数据类型 //set内置数据 进行排序
5
6
7 #include<iostream>
8 #include<string>
9 #include<set>
10
11 using namespace std;
12 void printSet(set<int>&s)
13 {
14 for (set<int>::iterator it = s.begin(); it != s.end(); it++)
15 {
16 cout << *it << " ";
17 }
18 cout << endl;
19 }
20 void test01()
21 {
22 set<int>s1;
23 //插入数据 只有insert方式
24 s1.insert(10);
25 s1.insert(40);
26 s1.insert(40);
27 s1.insert(30);
28 s1.insert(20);
29
30
31 //遍历容器
32 //set容器特点:所有元素插入时候会被排序
33 //set容器不允许插入重复的元素
34 printSet(s1);
35
36
37 //拷贝构造
38 set<int>s2(s1);
39 printSet(s2);
40
41 //赋值操作
42 set<int>s3;
43 s3 = s2;
44 printSet(s3);
45
46 }
47
48 //set大小和交换
49 void test02()
50 {
51 set<int>s2;
52 s2.insert(10);
53 s2.insert(20);
54 s2.insert(30);
55 s2.insert(40);
56 s2.insert(40);
57
58 printSet(s2);
59
60 //是否为空
61 if (s2.empty())
62 {
63 cout << "s2为空!" << endl;
64 }
65 else
66 {
67 cout << "s2不为空!" << endl;
68 cout << "s2的个数为:" << s2.size() << endl;
69 }
70
71 set<int>s3;
72 s3.insert(100);
73 s3.insert(200);
74 s3.insert(3000);
75 s3.insert(400);
76 s3.insert(401);
77
78 cout << "交换前:" << endl;
79 printSet(s2);
80 printSet(s3);
81 cout << "交换后:" << endl;
82
83 s2.swap(s3);
84 printSet(s2);
85 printSet(s3);
86
87
88
89
90 }
91
92
93 //set 插入和删除
94 void test03()
95 {
96 set<int>s3;
97 s3.insert(100);
98 s3.insert(200);
99 s3.insert(3000);
100 s3.insert(400);
101 s3.insert(401);
102
103 printSet(s3);
104
105 //删除
106 s3.erase(s3.begin());
107 printSet(s3);
108
109 //删除重载
110 s3.erase(200);
111 printSet(s3);
112
113 //清空
114 s3.erase(s3.begin(), s3.end());
115 printSet(s3);
116
117 s3.clear();
118 printSet(s3);
119 }
120
121 //set查找和统计
122 void test04()
123 {
124 set<int>s4;
125 s4.insert(100);
126 s4.insert(200);
127 s4.insert(3000);
128 s4.insert(400);
129 s4.insert(401);
130 printSet(s4);
131
132 set<int>::iterator pos = s4.find(20000);
133
134 if (pos != s4.end())
135 {
136 cout << "找到了元素:" << *pos << endl;
137 }
138 else
139 {
140 cout << "没有找到!" << endl;
141 }
142
143
144 }
145
146 //统计
147 void test05()
148 {
149 set<int>s4;
150 s4.insert(100);
151 s4.insert(200);
152 s4.insert(3000);
153 s4.insert(400);
154 s4.insert(401);
155 printSet(s4);
156
157 //统计
158 int num = s4.count(20000);
159 //对于set而言 统计结果 1 or 0
160 cout << "num = " << num << endl;
161
162 }
163
164 //set 和 multiset 区别
165
166 void test06()
167 {
168 set<int>s6;
169
170 pair<set<int>::iterator, bool> ret = s6.insert(10);
171
172 if (ret.second)
173 {
174 cout << "第一次插入成功!" << endl;
175 }
176 else
177 {
178 cout << "第一次插入失败!" << endl;
179 }
180 ret = s6.insert(10);
181 if (ret.second)
182 {
183 cout << "第二次插入成功!" << endl;
184 }
185 else
186 {
187 cout << "第二次插入失败!" << endl;
188 }
189
190 multiset<int>m1;
191 //允许插入重复值
192 m1.insert(10);
193 m1.insert(10);
194 m1.insert(10);
195 m1.insert(10);
196 m1.insert(10);
197 m1.insert(10);
198
199 for (multiset<int>::iterator it = m1.begin(); it != m1.end(); it++)
200 {
201 cout << *it << " ";
202 }
203 cout << endl;
204
205 }
206
207 //pair 对组创建 pair<type,type> p (value1,value2) pair<type,type>
208 //p = make_pair(value1,value2);
209 void test07()
210 {
211 //第一种
212 pair<string ,int>p("张三", 20);
213 cout << "姓名:" << p.first << " 年龄:" << p.second << endl;
214
215 //第二种
216 pair<string, int>p2 = make_pair("lisi", 20);
217 cout << "姓名:" << p2.first << " 年龄:" << p2.second << endl;
218 }
219 //set容器排序 存放内置数据类型
220 //仿函数 从大到小
221 class MyCompare
222 {
223 public:
224 bool operator()(int v1,int v2)const
225 {
226 return v1 > v2;
227 }
228 };
229 void test08()
230 {
231 set<int>s8;
232 s8.insert(20);
233 s8.insert(30);
234 s8.insert(10);
235 s8.insert(50);
236 s8.insert(40);
237
238
239 for (set<int>::iterator it = s8.begin(); it != s8.end(); it++)
240 {
241 cout << *it << " ";
242 }
243 cout << endl;
244
245 //指定排序规则 从大到小
246 set<int,MyCompare>s9;
247 s9.insert(20);
248 s9.insert(30);
249 s9.insert(10);
250 s9.insert(50);
251 s9.insert(40);
252
253 for (set<int,MyCompare>::iterator it = s9.begin(); it != s9.end(); it++)
254 {
255 cout << *it << " ";
256 }
257 cout << endl;
258 }
259
260 //set排序存放自定义数据类型
261 class Person
262 {
263 public:
264 Person(string name, int age)
265 {
266 this->m_Age = age;
267 this->m_Name = name;
268 }
269
270 string m_Name;
271 int m_Age;
272 };
273
274 //仿函数
275 class MyComparePerson
276 {
277 public:
278 bool operator()(const Person&p1,const Person&p2)const
279 {
280 //按照年龄 降序
281 return p1.m_Age > p2.m_Age;
282 }
283 };
284 void test09()
285 {
286 //自定义的数据类型 都会指定排序规则
287 set<Person, MyComparePerson>s;
288
289 //创建Person对象
290 Person p1("刘备", 25);
291 Person p2("关羽", 300);
292 Person p3("张飞", 78);
293 Person p4("曹操", 20);
294
295 s.insert(p1);
296 s.insert(p2);
297 s.insert(p3);
298 s.insert(p4);
299
300 for (set<Person, MyComparePerson>::iterator it = s.begin(); it != s.end(); it++)
301 {
302 cout << "姓名:" << it->m_Name << "\t年龄: " << it->m_Age << endl;
303 }
304
305 }
306
307
308 int main()
309 {
310 test01();
311
312
313 test02();
314 test03();
315 test04();
316 test05();
317
318 test06();
319 test07();
320
321 test08();
322
323 test09();
324 system("pause");
325 return 0;
326 }

C++ //set/multiset 容器 //set不可以插入重复的数字 multiset可以插入重复的数字 //ste容器构造和赋值 //set大小和交换 //set 插入和删除 //set查找和统计 //set 和 multiset 区别 //pair 对组创建 //set存放自定义数据类型 //set内置数据 进行排序的更多相关文章
- STL——容器(Set & multiset)的默认构造 & 带参构造 & 对象的拷贝构造与赋值
1. 默认构造 set<int> setInt; //一个存放int的set容器. set<float> setFloat; //一 ...
- STL——容器(Map & multimap)的拷贝构造与赋值
1. Map & multimap 的拷贝构造与赋值 map(const map &mp); //拷贝构造函数 map& operator=(con ...
- Python中内置数据类型list,tuple,dict,set的区别和用法
Python中内置数据类型list,tuple,dict,set的区别和用法 Python语言简洁明了,可以用较少的代码实现同样的功能.这其中Python的四个内置数据类型功不可没,他们即是list, ...
- 容器间通信的三种方式 - 每天5分钟玩转 Docker 容器技术(35)
容器之间可通过 IP,Docker DNS Server 或 joined 容器三种方式通信. IP 通信 从上一节的例子可以得出这样一个结论:两个容器要能通信,必须要有属于同一个网络的网卡. 满足这 ...
- IOC容器在web容器中初始化过程——(二)深入理解Listener方式装载IOC容器方式
先来看一下ContextServletListener的代码 public class ContextLoaderListener extends ContextLoader implements S ...
- 顺序容器----顺序容器操作,vector对象如何增长,额外的string操作,容器适配器
一.顺序容器操作 1.向顺序容器添加元素 向顺序容器(array除外)添加元素的操作: 操作 说明 c.push_back(t) 在c的尾部创建一个值为t的元素.返回void c.emplace_ba ...
- AngularJS内建服务以及自定义服务的用法
在AngularJS中, 服务是一个比较重要的部分,它是一个对象或者是函数,可以在你的AngularJS的应用中使用.接下来介绍几种比较常用的内建服务以及自定义服务的方法. [内建服务] (1)loc ...
- 条目七《如果容器中包含了通过new操作创建的指针,切记在容器对象析构前将指针delete掉》
如果容器中包含了通过new操作创建的指针,切记在容器对象析构前将指针delete掉 在STL中容器是智能的,可以在容器销毁时自动调用容器里对象的析构函数来销毁容器存储的对象. STL的容器虽然比较智能 ...
- SQL删除语句DROP、TRUNCATE、 DELETE 的区别
主要介绍了SQL删除语句DROP.TRUNCATE. DELETE 的区别,帮助大家更好的理解和学习sql语句,感兴趣的朋友可以了解下 DROP: 1 DROP TABLE test; 删除表test ...
- mysql和oracle建表语句以及数据类型的区别
1.mysql和oracle建表语句的区别 mysql DROP TABLE IF EXISTS `order`;CREATE TABLE `order` ( `id` int(11) NOT NU ...
随机推荐
- windwos10任务栏居中
如下操作 新建一个文件夹如图 然后出现这个重右往左一直拖然后拉出来就行了如图 拖不动或者没有的把这个关了-锁定任务栏 文字如何隐藏? 在这个文字旁边右击关闭标题即可 然后锁定任务栏就OK了
- TienChin 验证码响应结果分析&验证码生成接口分析
验证码响应结果分析 首先从前端开始进行分析,进入到登录页面,打开开发者工具(f12),找到 network,f5 刷新一下页面,然后,筛选一下,筛选内容为 Fetch/XHR: 你会发现列表中有两项内 ...
- 离线生成双语字幕,一键生成中英双语字幕,基于AI大模型,ModelScope
制作双语字幕的方案网上有很多,林林总总,不一而足.制作双语字幕的原理也极其简单,无非就是人声背景音分离.语音转文字.文字翻译,最后就是字幕文件的合并,但美中不足之处这些环节中需要接口api的参与,比如 ...
- 1.基于Label studio的训练数据标注指南:信息抽取(实体关系抽取)、文本分类等
文本抽取任务Label Studio使用指南 1.基于Label studio的训练数据标注指南:信息抽取(实体关系抽取).文本分类等 2.基于Label studio的训练数据标注指南:(智能文档) ...
- Visual Studio安装教程、Visual Studio2017软件提供,版本序列号丨编写第一个程序。
一.安装步骤 1.安装前注意一下自己电脑的IE浏览器是不是10 版本及以上的,如果不是要先升级到10才能安装 Visual Studio2017.打开IE浏览器,点击[设置]接着点击[关于]即可查看. ...
- C/C++ Npcap包实现数据嗅探
npcap 是Nmap自带的一个数据包处理工具,Nmap底层就是使用这个包进行收发包的,该库,是可以进行二次开发的,不过使用C语言开发费劲,在进行渗透任务时,还是使用Python构建数据包高效,这东西 ...
- Java连接kubernates集群最优雅的两种方式
创建maven工程,pom.xml中引入连接k8s的客户端jar包: <properties> <maven.compiler.source>8</maven.compi ...
- Windows 11 ISO原版镜像文件下载(2024年01月)
Windows 11 (business editions), version 23H2 (x64) - DVD (Chinese-Simplified) 链接:https://pan.baidu.c ...
- 面试官:SpringCloudGateway过滤器类型有哪些?
在 Spring Cloud Gateway 中,过滤器是在请求到达目标服务之前或之后,执行某些特定操作的一种机制.例如,它可以实现对传入的请求进行验证.修改.日志记录.身份验证.流量控制等各种功能. ...
- Google_Book_20Things.前言以及前四项学习笔记
20 THINGS I LEARNED ABOUT BROWSERS AND THE WEB Illustrated by Christoph Niemann. Written by the Goog ...