一、关于set
1.本质:内部自动有序且不含重复元素的容器。
2.优点:自动去重,自动排序。
3. 常见用途:需要去除重复元素时,元素比较大或者不是 int 无法开散列表。
二、使用set
1.需要引用的头文件
#include<set>
using namespace std;
2.定义
set<typedef> name 其中typedef可以为任何基本类型,比如:
set<int> name;
set<double> name;
set<char> name;
set<node> name; //其中node为结构体类型。
3.访问
只能通过迭代器访问(iterator):
set<typedef>::iterator it; //其中的typedef可以是任意数据类型如int、double等。
遍历访问方式(唯一):
set<int> st;
st.insert(3);
st.insert(4);
st.insert(5);
st.insert(6);
for(set<int>:: iterator it = st.begin();it != st.end();it++){
printf("%d",*it);
}
4. 常用函数
4.1 insert
用法见上段代码,可将x直接插入,并且自动去重和排序。
4.2 find
find(x)返回对应x值的迭代器,若set中不含x,则返回st.end()处的迭代器。
set<int>::iterator it = st.find(2);
4.3 erase
删除单个元素,或删除一组元素。
4.3.1 删除单个元素
先找再删:
st.erase(st.find(100)); //找到 100 ,并删除。
直接删除:
st.erase(100); //直接删除 100 的值。
4.3.2 删除一组元素
set<int>::iterator it = st.find(30);
st.erase(it,st.end()); //删除 30 以及之后的元素, 区间范围为前闭后开。
4.4 size
返回内部元素数目。
int i = st.size();
4.5 clear
清楚set中所有元素:
st.clear();