STL库set容器
- Set的定义:set s1 = {1,6,-3}; // 内部自动递增排序
set < T > name;
set< int> name;
set< double> name;
set< char> name;
set< Node> name;//Node是结构体类型
(1)定义和写法和vector基本一样,同样typename可以是任何基本类型,结构体,STL容器类型。
(2)同样,typename是容器的时候,>>后要加空格,避免编译器当成位运算出错。
- Set:集合,一个内部自动有序而且不重复元素的容器。
- set内的元素,自动递增排序,并且去重。
- set只能通过迭代器iterator访问;
- 定义和写法和vector基本一样,<数据类型>以是任何基本类型;
- iterator 不支持 “+”运算符重载,但支持++、- -;
1、构造函数
- set < T > s; // 创建空集合
- set < T > s1=s; // 拷贝构造函数
set < T > s1(s);
#include "stdafx.h"
#include <iostream>
#include <set>
using namespace std;
int main() {
//------------------ set 的定义
set <int> s1 = {
1,6,-3}; // 内部自动递增排序
for (auto it = s1.begin(); it != s1.end(); ++it) {
cout << *it << " "; // -3 1 6
}
//------------------ set() 构造函数
set <char> s2;
cout << s2.size() << endl; // 0
//------------------ 拷贝构造函数
set <char> s3;
s3.insert('a');
s3.insert('b');
s3.insert('1');
s3.insert('@');
set<char> s4(s3); // set<char> s4=s3;
for (auto it = s4.begin(); it != s4.end(); ++it) {
cout << *it << " "; // 1 @ a b
}
return 0;
}
2、增
2.1 insert() 去重+排序
insert(x):将x插入set容器中,并且自动递增排序和去重。时间复杂度为O(logN),N为元素个数。
2.2 emplace() 去重+排序
emplace(x):将x插入set容器中,并且自动递增排序和去重。
2.3 代码演示
int main() {
//------------------ insert( ) 插入——去重+排序
set <char> s1;
s1.insert('a');
s1.insert('a');
s1.insert('b');
s1.insert('1');
s1.insert('a');
s1.insert('@');
s1.insert('a');