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
