当前位置 博文首页 > lilian的博客:STL之set常见用法详解
摘自胡凡的《算法笔记》,仅作记录用!
前言:
set是一个内部自动有序且不含重复元素的容器。
如果要使用set,需要添加set头文件,即#include<set>
,除此之外,还需要添加using namespace std;
一、set的定义
set<typename> name;
其实类似于vector的定义set<typename> Arrayname[arraySize];
,这样Arrayname[0]~Arrayname[arraySize-1]中每一个都是一个set容器二、set容器内元素的访问
set<typename>::iterator it;
定义迭代器,得到了迭代器it之后,可以通过*it
来访问set中的元素三、set常用函数
insert(x)
可以将x插入set容器中,并自动递增排序和去重。find(value)
返回set中对应值为value的迭代器st.erase(it)
,it为所需要删除元素的迭代器。可以结合find()函数来使用。时间复杂度为
O
(
1
)
O\left(1\right)
O(1)。二是st.erase(value)
,value为所需要删除元素的值,时间复杂度为
O
(
N
)
O\left(N\right)
O(N)st.erase(first,last)
可以删除一个区间内的所有元素,其中first为所需要删除区间的其实迭代器,而last为所需要删除区间的末尾迭代器的下一个地址,也即为删除[first,last)。时间复杂度为
O
(
l
a
s
t
?
f
i
r
s
t
)
O\left(last-first\right)
O(last?first)四、set的常见用途