set
set 集合 一个内部自动有序且不含重复元素的容器
自动递增排序,且自动去除了重复元素
定义
此处与vector一样
set<typename> name;
set<int> a;
set<int> a[100];
set只能通过迭代器(iterator)访问
set<typename>::iterator it;
set<int>::iterator it
set不支持*(it + i)的访问方式
#include<stdio.h>
#include<set>
using namespace std;
int main(){
set<int> st;
st.insert(3);
st.insert(5);
st.insert(2);
st.insert(3);
for(set<int>::iterator it = st.begin(); it != st.end(); it++){
printf("%d ", *it);
}
return 0;
}
常用函数
- insert(x) 可将x插入set容器中, 并自动递增排序和去重, 时间复杂度O(logN), 其中N为set内元素个数
2 . find() find(value)返回set中对应值为value的迭代器, 时间复杂度O(logN), 其中N为set内元素个数
set<int>::iterator it = st.find(2);
printf("%d\n", *it);
// 上两句也可改写为 printf("%d\n", *(st.find(2));
- erase()
3.1.1 st.erase(it) it为迭代器 可以结合find()函数来使用
3.1.2 st.erase(value)
3.2 删除一个区间
st.erase(st.find(100)); //利用find()函数找到200,然后利用erase删它
st.erase(it, st.end()); // 删除元素30至set末尾之间的元素 10 20 30 40 删去 30 40
- size() 获得set内元素的个数
- clear() 清空set中的所有元素
set 常见用途
set 最主要的作用是自动去重并按升序排序,遇到需要去重但不方便开数组情况用set解决