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(); //返回 ...
随机推荐
- DB2中SQL基本语句的操作
完全转载自:http://blog.sina.com.cn/s/blog_67aaf4440100v01p.html --创建数据库 create database Etp; --连接数据库 conn ...
- Python_算法汇总
1. 约瑟夫环: # 约瑟夫环:共31个数,每隔9个删除一个,要求输出前15个号码 a=[x for x in range(1,31)] #生成编号 del_number = 8 #该删除的编号 fo ...
- Mysql_笔记2018.1.29
1.主要数据库 Oracle MySQL Sqlsever 微软 MongoDB (非关系型数据库) 2.MySql 专业词语 1.数据库:一些关联表的集合 2.数据表:表示数据的矩阵 3.列:同ex ...
- Java解释单链表中的头插法以及尾插法
单链表属于数据结构中的一种基本结构,是一种线性结构,在此使用Java对其中的头插法以及尾插法进行解释. 首先定义好链表中的节点类: 其中,data代表节点所存放的数据,next代表指向下一节点 对于单 ...
- 深度学习论文翻译解析(十四):SSD: Single Shot MultiBox Detector
论文标题:SSD: Single Shot MultiBox Detector 论文作者:Wei Liu, Dragomir Anguelov, Dumitru Erhan, Christian Sz ...
- netcore一键部署到linux服务器以服务方式后台运行
@font-face { font-family: octicons-link; src: url("data:font/woff;charset=utf-8;base64,d09GRgAB ...
- kali 2020.1 更新源,并安装docker
先说一句浙大牛逼!!!装个docker折腾了半天,测了半天只有浙大的更新源能用,完美不报错!清华阿里什么的更新源都是渣渣. deb http://mirrors.zju.edu.cn/kali kal ...
- 通过shodan搜索相同favicon.ico的网站
0x01 根据favicon.ico生成hash python2,想改python3折腾了半天不得 import mmh3 import requests response = requests.ge ...
- HTML5大纲算法
什么是HTML大纲算法? 大纲算法允许用户代理(user agent)从一个web页面生成一个信息结构目录,让用户对页面有一个快速的概览.类似书籍.PDF.帮助文档等,都有一个清晰的目录结构,用户能方 ...
- SQL server分页的四种方法(算很全面了)
这篇博客讲的是SQL server的分页方法,用的SQL server 2012版本.下面都用pageIndex表示页数,pageSize表示一页包含的记录.并且下面涉及到具体例子的,设定查询第2 ...