set常見用法

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解決

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章