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()。 |