1、Set的用法
Set:集合,一个内部自动有序而且不重复元素的容器。使用set,要加头文件#include<set>和using namespace std;
1.1、Set的定义
set<typename> name; set<int> name; set<double> name; set<char> name; set<Node> name;//Node是结构体类型 set<typename> Arrayname[arraySize];//set<int> a[100];a[0]~a[99]的每一个都是一个set容器。 /* 定义和写法和vector基本一样,同样typename可以是任何基本类型,结构体,STL容器类型。 同样,typename是容器的时候,>>后要加空格,避免编译器当成位运算出错。 */
1.2、set容器内元素的访问
set只能通过迭代器iterator访问
set<typename>::iterator it;//typename对应定义set时的类型。 set<int>::iterator it;
因为除了vector和string之外的STL的容器都不支持以下标的方式访问。
#include<stdio.h> #include<set> using namespace std; int main() { set<int> st; for(int i=0;i<5;i++) { st.insert(i); } for(set<int>::iterator it=st.begin();it!=st.end();it++) { printf("%d ",*it); } return 0; }
set内的元素,自动递增排序,并且去重。
1.2、set常用函数
1.2.1、insert()函数
insert(x):将x插入set容器中,并且自动递增排序和去重。时间复杂度为O(logN),N为元素个数
1.2.2、find()函数
find(value):查找值为value的元素,返回它的迭代器。时间复杂度为O(logN),N为元素个数
1.2.3、erase()函数
erase(x):删除单个元素,时间复杂度为O(logN)
erase(a,b);删除左闭右开区间内[a,b)的元素,时间复杂度为O(b-a)
1.2.4、size()函数
size():用来获得set内元素的个数,时间复杂度为O(1)
1.2.5、clear()函数
clear():用来清空set所有元素,时间复杂度为O(N)
#include<stdio.h> #include<set> using namespace std; int main() { set<int> st; st.insert(2); st.insert(5); st.insert(1); st.insert(2); st.inert(4); st.insert(3); int len=st.size();//3 for(set<int>::iterator it=st.begin();it!=st.end();it++) { printf("%d ",*it);//1,2,3,4,5 } st.erase(st.find(2));//利用find()函数先找到2,然后erase删除它 st.erase(3);//删除set中值为3的元素,时间复杂度为O(logN) set<int>::iterator it=st.find(4); st.erase(it,st.end());//删除元素2到set末尾之间的数,也就是4,5 st.clear(); int len_clear=st.size();//0 return 0; }
1.3、set的用途
set重要的作用:自动去重,升序排序。
2018-09-25 15:36:20
@author:Foreordination