Skip to content

set 集合

标准库类型 set 是数学上的集合,每个元素只出现一次。

  • 基本语法

set<typename> name;

需要加上头文件 set

  • 创建一个空集合
c
set<int> s;

表示创建一个 int 类型的集合,名字叫做 s

集合的常用函数

  • insert()

s.insert()
向 s 集合中插入元素

cpp
#include<bits/stdc++.h>
using namespace std;
int main()
{
    set<int> s;
	s.insert(1);//向s集合中插入数字1
	s.insert(1);//向s集合中插入数字1
	s.insert(2);//向s集合中插入数字2
	s.insert(3);//向s集合中插入数字3
    return 0;
}
  • erase()

s.erase()
向 s 集合中插入元素

cpp
#include<bits/stdc++.h>
using namespace std;
int main()
{
    set<int> s;
	s.insert(1);//向s集合中插入数字1
	s.insert(1);//向s集合中插入数字1
	s.insert(2);//向s集合中插入数字2
	s.erase(2);//向s集合中插入数字3
    return 0;
}
  • size()

s.size()
得到 s 集合的元素个数

size 示例代码
cpp
#include<bits/stdc++.h>
#include<stack>
using namespace std;
int main()
{
    set<int> s;
	s.insert(1);
	s.insert(1);
	s.insert(2);
	s.insert(3);
	cout << "集合中元素的个数是:" << s.size() << endl;
    return 0;
}

运行结果:

c
集合中元素的个数是:3

分析

虽然 s 集合中插入了 4 个元素进去,但是数字 1 重了,去重之后的 set 里面仅 3 个元素。

  • count()

s.count(num)
返回 num 值元素的个数

count 示例代码
cpp
#include<bits/stdc++.h>
using namespace std;
int main()
{
    set<int> s;
	s.insert(1);
	s.insert(1);
	s.insert(2);
	s.insert(3);
	cout << "数字10的个数:" << s.count(10) << endl;
    return 0;
}

运行结果:
```c
数字10的个数:0

分析

从侧面可以去检测某一个数字是否在集合中。

  • empty()

s.empty()
判断集合是否为空,如果为空,返回 true,不为空返回 false。

empty 示例代码
cpp
#include<bits/stdc++.h>
using namespace std;
int main()
{
    set<int> s;
	s.insert(1);
	s.insert(1);
	s.insert(2);
	s.insert(3);
	if(s.empty()){
		cout << "该集合没有元素" << endl;
	}else{
		cout << "该集合有元素" << endl;
	}
    return 0;
}

运行结果:

c
该集合有元素

分析

该集合有元素,所以 empty 函数为 false。

  • clear()

s.clear()
将集合清空

empty 示例代码
cpp
#include<bits/stdc++.h>
using namespace std;
int main()
{
    set<int> s;
	s.insert(1);
	s.insert(1);
	s.insert(2);
	s.insert(3);
    s.clear();
	if(s.empty()){
		cout << "该集合没有元素" << endl;
	}else{
		cout << "该集合有元素" << endl;
	}
    return 0;
}

运行结果:

c
该集合没有元素

分析

可以看的出来,通过 clear 函数,集合里面的元素被清空了,所以打印“该集合没有元素”。

set 函数列表

函数描述
insert(val)往 set 中插入元素 val。
emplace(val)往 set 中插入元素 val。
begin()set 的第一个元素的地址。
end()set 的最后一个元素的下一个地址。
size()set 中元素的数量。
erase(key)删除 set 指定 key 的元素。
clear()清空 set。
empty()检查 set 是否为空。
find(key)查找 set 中的键值为 key 的元素,如果不存在,返回 end()。