set的常见用法
set是集合,是一个 内部自动有序且 不含重复元素的容器。
如果要使用set,需要添加头文件
#include<set>
,同时还要加上
using namespace std;
。
set的定义
单独定义一个set:
set<typename> name;
typename和vector一样。例子:
set<int> name;
set<double> name;
set<node> name;
set数组的定义也和vector相同:
set<typename> arrayname[arraysize];
例如:
set<int> a[100];
这样arrayname[0] ~ arrayname[arraysize-1]中的每一个都是一个set容器。
set容器内元素的访问
set只能通过迭代器访问。set<typename>::iterator it;
而且不能使用迭代器+整数的访问方式。
set<int> st;
st.insert(3);
st.insert(5);
st.insert(2);
st.insert(3);
//不支持it<st.end()的写法
for(set<int>::iterator it = st.begin();it != st.end();it++){
printf("%d ",*it);
}
set常用函数
- insert()
insert(x)可以将x插入set容器中,并且自动递增排序和去重。 - find()
find(value)返回set中对应值为value的迭代器。 - erase()
有两种用法:①删除单个元素;②删除一个区间内的所有元素。用法同vector中所讲。
st.erase(st.find(100));
st.erase(100);
增加了erase(value)直接根据值来删除 - size()
size()用来获得set内元素的个数。 - clear()
clear()用来清空set内的元素。
set的常见用途
主要的作用是用来自动去重并按升序排序。