STL——容器(Set & multiset)的默认构造 & 带参构造 & 对象的拷贝构造与赋值
1. 默认构造
set<int> setInt; //一个存放int的set容器。
set<float> setFloat; //一个存放float的set容器。
set<string> setString; //一个存放string的set容器。
multiset<int> mulsetInt; //一个存放int的multi set容器。
multiset<float> multisetFloat; //一个存放float的multi set容器。
multiset<string> multisetString; //一个存放string的multi set容器。
示例代码:
1 #include <iostream>
2 #include <set>
3
4 using namespace std;
5
6 int main()
7 {
8 set<int> setInt; //一个存放 int 的 set 容器。
9 for (int i = 0; i < 5; i++)
10 {
11 setInt.insert(100 - i);
12 }
13 setInt.insert(100);
14 for (set<int>::iterator it = setInt.begin(); it != setInt.end(); it++)
15 {
16 cout << *it << " ";
17 }
18 cout << endl;
19
20 set<float> setFloat; //一个存放 float 的 set 容器。
21 for (int i = 0; i < 5; i++)
22 {
23 setFloat.insert((100 - i) * 0.5);
24 }
25 setFloat.insert(50);
26 for (set<float>::iterator itf = setFloat.begin(); itf != setFloat.end(); itf++)
27 {
28 cout << *itf << " ";
29 }
30 cout << endl;
31
32 set<string> setString; //一个存放 string 的 set 容器。
33 setString.insert("a");
34 setString.insert("a");
35 setString.insert("a");
36 for (set<string>::iterator its = setString.begin(); its != setString.end(); its++)
37 {
38 cout << *its << " ";
39 }
40 cout << endl;
41
42
43 /***************************** multiset ********************************/
44 cout << "*********** multiset *********" << endl;
45 multiset<int> mulsetInt; //一个存放 int 的 multiset 容器。
46 for (int i = 0; i < 5; i++)
47 {
48 mulsetInt.insert(100 - i);
49 }
50 mulsetInt.insert(100);
51 for (set<int>::iterator it = mulsetInt.begin(); it != mulsetInt.end(); it++)
52 {
53 cout << *it << " ";
54 }
55 cout << endl;
56
57 multiset<float> multisetFloat; //一个存放 float 的 multiset 容器。
58 for (int i = 0; i < 5; i++)
59 {
60 multisetFloat.insert((100 - i) * 0.5);
61 }
62 multisetFloat.insert(50);
63 for (set<float>::iterator itf = multisetFloat.begin(); itf != multisetFloat.end(); itf++)
64 {
65 cout << *itf << " ";
66 }
67 cout << endl;
68
69 multiset<string> multisetString; //一个存放 string 的 multiset 容器。
70 multisetString.insert("a");
71 multisetString.insert("a");
72 multisetString.insert("a");
73 for (set<string>::iterator its = multisetString.begin(); its != multisetString.end(); its++)
74 {
75 cout << *its << " ";
76 }
77 cout << endl;
78
79 return 0;
80 }
打印结果:

2. 带参构造
set(beg,end); //将[beg, end)区间中的元素拷贝给本身。
multiset(beg,end); //将[beg, end)区间中的元素拷贝给本身。
1 #include <iostream>
2 #include <set>
3
4 using namespace std;
5
6 int main()
7 {
8 set<int> setInt;
9 for (int i = 0; i < 5; i++)
10 {
11 setInt.insert(100 - i);
12 }
13
14 set<int> setInt1(setInt.begin(), setInt.end());
15 for (set<int>::iterator it = setInt1.begin(); it != setInt1.end(); it++)
16 {
17 cout << *it << " ";
18 }
19 cout << endl;
20
21 return 0;
22 }
打印结果:

set(const set &s); //拷贝构造函数。
multiset(const multiset &s); //拷贝构造函数。
1 #include <iostream>
2 #include <set>
3
4 using namespace std;
5
6 int main()
7 {
8 set<int> setInt;
9 for (int i = 0; i < 5; i++)
10 {
11 setInt.insert(100 - i);
12 }
13
14 set<int> setInt1(setInt);
15 for (set<int>::iterator it = setInt1.begin(); it != setInt1.end(); it++)
16 {
17 cout << *it << " ";
18 }
19 cout << endl;
20
21 return 0;
22 }
打印结果

3. 拷贝构造与赋值
set(const set &st); //拷贝构造函数
set& operator=(const set &st); //重载等号操作符,这些都差不多,不过多解释了
1 #include <iostream>
2 #include <set>
3
4 using namespace std;
5
6 int main()
7 {
8 set<int> setInt;
9 for (int i = 0; i < 5; i++)
10 {
11 setInt.insert(100 - i);
12 }
13
14 // set<int> setInt1(setInt); //拷贝构造
15 set<int> setInt1 = setInt; //赋值构造
16 for (set<int>::iterator it = setInt1.begin(); it != setInt1.end(); it++)
17 {
18 cout << *it << " ";
19 }
20 cout << endl;
21
22 return 0;
23 }
set.swap(st); //交换两个集合容器
1 #include <iostream>
2 #include <set>
3
4 using namespace std;
5
6 int main()
7 {
8 set<int> setInt1;
9 for (int i = 0; i < 5; i++)
10 {
11 setInt1.insert(i);
12 }
13 set<int> setInt2;
14 for (int i = 0; i < 5; i++)
15 {
16 setInt2.insert(i);
17 }
18 setInt2.insert(666);
19
20 cout << "遍历setInt1" << endl;
21 for (set<int>::iterator it = setInt1.begin(); it != setInt1.end(); it++)
22 {
23 cout << *it << " ";
24 }
25 cout << endl;
26 cout << "遍历setInt2" << endl;
27 for (set<int>::iterator it = setInt2.begin(); it != setInt2.end(); it++)
28 {
29 cout << *it << " ";
30 }
31 cout << endl;
32
33 cout << endl << "使用 swap 交换两个容器" << endl;
34
35 setInt1.swap(setInt2);
36 cout << "交换后遍历 setInt1" << endl;
37 for (set<int>::iterator it = setInt1.begin(); it != setInt1.end(); it++)
38 {
39 cout << *it << " ";
40 }
41 cout << endl;
42
43 cout << "交换后遍历 setInt2" << endl;
44 for (set<int>::iterator it = setInt2.begin(); it != setInt2.end(); it++)
45 {
46 cout << *it << " ";
47 }
48 cout << endl;
49
50 return 0;
51 }
打印结果:

=====================================================================================================================
STL——容器(Set & multiset)的默认构造 & 带参构造 & 对象的拷贝构造与赋值的更多相关文章
- STL—— 容器(vector)的内存分配,声明时的普通构造&带参构造
vector 的几种带参构造 & 初始化与内存分配: 1. 普通的带参构造: vector 的相关对象可以在声明时通过 vector 的带参构造函数进行内存分配,如下: 1 #include ...
- STL Set和multiset 容器
STL Set和multiset 容器 set/multiset的简介 set是一个集合容器,其中所包含的元素是唯一的,集合中的元素按一定的顺序排列. 元素插入过程是按排序规则插入,所以不能指定插入位 ...
- STL - set和multiset
set/multiset的简介 set是一个集合容器,其中所包含的元素是唯一的,集合中的元素按一定的顺序排列.元素插入过程是按排序规则插入,所以不能指定插入位置. set采用红黑树变体的数据结构实现, ...
- 【转】c++中Vector等STL容器的自定义排序
如果要自己定义STL容器的元素类最好满足STL容器对元素的要求 必须要求: 1.Copy构造函数 2.赋值=操作符 3.能够销毁对象的析构函数 另外: 1. ...
- C++ 构造函数、析构函数、拷贝构造、赋值运算符
之所以要把它们放在一起,是因为在使用C/C++类语言的时候,很容易混淆这几个概念(对Java来说完全没有这样的问题,表示Javaor完全没有压力). 先建立一个测试类(包含.h和.cpp) //~ P ...
- Android(java)学习笔记107-1:通过反射获得带参构造方法并且使用
反射获得带参构造方法并且使用: 1. 获取字节码文件对象 Class c = Class.forName("cn.itcast_01.Person"); 2.获取带参构 ...
- Android(java)学习笔记48:通过反射获得带参构造方法并且使用
1. 反射获得带参构造方法并且使用: (1)获取字节码文件对象 Class c = Class.forName("cn.itcast_01.Person"); (2)获 ...
- STL——容器(Set & multiset)编译器提供的16种构造(挖个坑)
Set & multiset 在vs2019编译器中提供了16种构造方法 1.默认的无参构造 2.比较容器内容,key_comp()函数返回一个比较key的函数. 3.使用迭代器的区间拷贝,拷 ...
- STL容器(Stack, Queue, List, Vector, Deque, Priority_Queue, Map, Pair, Set, Multiset, Multimap)
一.Stack(栈) 这个没啥好说的,就是后进先出的一个容器. 基本操作有: stack<int>q; q.push(); //入栈 q.pop(); //出栈 q.top(); //返回 ...
随机推荐
- php读取Excel文件数据
首先先下载 PHPExcel 脚本之家下载地址:https://www.jb51.net/codes/194070.html 然后把文件丢到php脚本同级目录里面 在php文件里面写下以下代码即可 & ...
- 正则表达式——maltrail工程项目中使用
1. 正则表达所需语法 \ 正则表达式使用反斜杠字符 ('') 来表示特殊形式或是允许在使用特殊字符时不引发它们的特殊含义. 转义特殊字符(允许你匹配 '*', '?', 或者此类其他) \A 只匹配 ...
- Guitar Pro怎么导出乐谱
使用Guitar Pro可以自由创作乐谱,也能根据演示效果来作出相应调整,算得上是公认的良心吉他谱制作软件.除了系统演示功能外,Guitar Pro还能给用户的实际练习提供便利.必要时,用户能将软件内 ...
- 为什么思维导图软件MindManager成为了企业培训必备的工具
企业培训,无论是前期准备.中间的演讲演示.还是后期的总结整理等.MindManager都可以以不同的形式,给你更好的培训方式.下面就来看看MindManager是怎么协助企业培训的吧: 前期准备--制 ...
- web自动化测试,弹出窗的操作
弹出窗有两种: 1.alert弹窗 2.页面弹出窗 什么是alert弹窗呢,点击某一个事件后,会弹出一个弹窗,如下图所示,相信大家在测试中有遇到过,怎么操作它呢 1.1弹窗出现后,使用switch_t ...
- 看完这篇还不会 Elasticsearch 搜索,那我就哭了!
本文主要介绍 ElasticSearch 搜索相关的知识,首先会介绍下 URI Search 和 Request Body Search,同时也会学习什么是搜索的相关性,如何衡量相关性. Search ...
- 日期选择组件(DatePicker)的实现
一.效果图 日期选择组件大概长这样: 从效果图可以看出,日期选择组件由两部分组成:日历表格和顶部操作栏. 二.日历表格 日期选择组件的核心主体是日历表格: 可以将日历表格表示成一个7️*的二维数组,数 ...
- arthas监控elasticsearch(7.x)
arthas介绍 arthas是Alibaba推出的java诊断工具 官方文档 准备 准备docker环境 name port centos_arthas 3658:3658 docker run - ...
- [自学] MIT的EECS本科+研究生课程【持续更新中-2020.06.02】
前言 我的本科是读的电子信息工程,研究生跟着老师做项目,参与到深度学习中来,毕业后做了算法工程师,工作之后愈发发现,不论从事什么岗位,基础都很重要,但现在也没有时间再读一遍本科了,自学的话也不知道从何 ...
- idea使用帮助
IDEA激活码形式,扫码二维码回复 激活码 自提,秒激活,持续更新.回复的是> 激活码 2020.2以上版本的 IDEA 请跳转至该链接:https://t.1yb.co/3ntg 2018.3 ...