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)的默认构造 & 带参构造 & 对象的拷贝构造与赋值的更多相关文章

  1. STL—— 容器(vector)的内存分配,声明时的普通构造&带参构造

    vector 的几种带参构造 & 初始化与内存分配: 1. 普通的带参构造: vector 的相关对象可以在声明时通过 vector 的带参构造函数进行内存分配,如下: 1 #include ...

  2. STL Set和multiset 容器

    STL Set和multiset 容器 set/multiset的简介 set是一个集合容器,其中所包含的元素是唯一的,集合中的元素按一定的顺序排列. 元素插入过程是按排序规则插入,所以不能指定插入位 ...

  3. STL - set和multiset

    set/multiset的简介 set是一个集合容器,其中所包含的元素是唯一的,集合中的元素按一定的顺序排列.元素插入过程是按排序规则插入,所以不能指定插入位置. set采用红黑树变体的数据结构实现, ...

  4. 【转】c++中Vector等STL容器的自定义排序

    如果要自己定义STL容器的元素类最好满足STL容器对元素的要求    必须要求:     1.Copy构造函数     2.赋值=操作符     3.能够销毁对象的析构函数    另外:     1. ...

  5. C++ 构造函数、析构函数、拷贝构造、赋值运算符

    之所以要把它们放在一起,是因为在使用C/C++类语言的时候,很容易混淆这几个概念(对Java来说完全没有这样的问题,表示Javaor完全没有压力). 先建立一个测试类(包含.h和.cpp) //~ P ...

  6. Android(java)学习笔记107-1:通过反射获得带参构造方法并且使用

    反射获得带参构造方法并且使用: 1. 获取字节码文件对象       Class c = Class.forName("cn.itcast_01.Person"); 2.获取带参构 ...

  7. Android(java)学习笔记48:通过反射获得带参构造方法并且使用

    1. 反射获得带参构造方法并且使用: (1)获取字节码文件对象       Class c = Class.forName("cn.itcast_01.Person"); (2)获 ...

  8. STL——容器(Set & multiset)编译器提供的16种构造(挖个坑)

    Set & multiset 在vs2019编译器中提供了16种构造方法 1.默认的无参构造 2.比较容器内容,key_comp()函数返回一个比较key的函数. 3.使用迭代器的区间拷贝,拷 ...

  9. STL容器(Stack, Queue, List, Vector, Deque, Priority_Queue, Map, Pair, Set, Multiset, Multimap)

    一.Stack(栈) 这个没啥好说的,就是后进先出的一个容器. 基本操作有: stack<int>q; q.push(); //入栈 q.pop(); //出栈 q.top(); //返回 ...

随机推荐

  1. API简介(二)

    API简介(二) API简介(一)一文中,介绍了使用API的目的.设计.发行政策以及公共API的含义,本篇主要介绍API的用法,从库和框架.操作系统.远程API.Web API四个方面展开. 库和框架 ...

  2. Jmeter 处理接口乱码

    第一步:添加 BeanShell Listener 第二步: 设置值 : prev.setDataEncoding("UTF-8") 第三步: 重新跑脚本,看接口返回值

  3. Redis订阅

    1.Redis订阅简介 进程间的一种消息通信模式:发送者(pub)发送消息,订阅者(sub)接收消息. 2.Redis订阅命令 3.Redis订阅的使用 先订阅后发布后才能收到消息, 1 可以一次性订 ...

  4. 掌握Python可以去哪些岗位?薪资如何?

    一.人工智能 Python作为人工智能的黄金语言,选择人工智能作为就业方向是理所当然的,就业前景也还不错.人工智能工程师的招聘起薪一般在20K-35K,如果是初级工程师,起薪一般12K. 二.大数据 ...

  5. vue项目中h5移动端中通过flex布局实现首尾固定,中间滚动(借鉴)

    html中 <div class="flexLayoutr"> <div class="div_head"></div> & ...

  6. 这些Servlet知识你一定要知道,金九银十大厂面试官都爱问

    前言 Servlet是服务器端的Java应用程序,可以生产动态Web页面.透过JSP执行过程可以知道JSP最终被编译成一个.class文件,查看该文件对应的Java类,发现该Java类继承自org.a ...

  7. CorelDRAW 2017提示已安装另一版本导致安装失败的解决办法

    Coreldraw提示"由于您已安装了另一版本,因此无法安装本产品.要安装本产品,您必须首先卸载现有版本"的情况在Coreldraw X8及Coreldraw 2017上都存在,下 ...

  8. 如何改变CorelDRAW的外观主题皮肤?

    CorelDRAW,我们通常也简称为CDR,是一款专业而且使用广泛的矢量图形绘制软件,也常用于绘制图形以及平面设计中.今天我们以CorelDRAW 2020来为大家演示一下,如何改变CorelDRAW ...

  9. 对于order by子句

    order by子句指定排序顺序 select username from user order by username; 依据username的字母顺序对于查找出来的username进行排序,默认是 ...

  10. 蓝桥杯——分组比赛(2017JavaB组第3题)

    分组比赛(17JavaB3) 9名运动员参加比赛,需要分3组进行预赛. 有哪些分组的方案呢? 标记运动员为 A,B,C,... I 下面的程序列出了所有的分组方法: ABC DEF GHI ABC D ...