set翻譯爲集合,是一個內部自動有序且不含重複元素的容器,若使用set,需要使用set頭文件,#include<set>
- set的定義
單獨定義
set<typename> name;
set數組定義
set<typename> Arrayname[arraysize];
Arrayname[0]到Arrayname[arraysize-1]中的每一個都是一個set容器
- 對set容器內元素的訪問
set只能通過迭代器訪問,可以通過it來訪問it裏的元素
set<typename>::iterator it;
由於除開vector和string之外的STL容器都不支持*(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;
}//輸出2 3 5
- set內的元素自動遞增排序且自動去除了重複元素,特別注意,不支持it<st.end()的寫法
set常用函數:
- insert()
- find()
- erase(),同樣可以刪除單個元素或者區間內元素,但是刪除單個元素有兩種方法
分別是st.erase(it)和st.erase(value),前者時間複雜度O(1),後者時間複雜度O(logN) - size()
- clear()
這些函數的使用方式和vector常用函數相差不大,不再闡述
用途:set最主要的作用是自動去重並按照升序排序,因此碰到需要去重卻不方便直接開數組的情況可以嘗試使用set解決