C STL set容器常用用法

2021-08-13 09:24:59 字數 3661 閱讀 5574

set是stl中一種標準關聯容器。它底層使用平衡的搜尋樹——紅黑樹實現,插入刪除操作時僅僅需要指標操作節點即可完成,不涉及到記憶體移動和拷貝,所以效率比較高。set,顧名思義是「集合」的意思,在set中元素都是唯一的,而且預設情況下會對元素自動進行公升序排列,支援集合的交(set_intersection),差(set_difference) 並(set_union),對稱差(set_symmetric_difference) 等一些集合上的操作,如果需要集合中的元素允許重複那麼可以使用multiset。

1.set容器的常用操作

使用時注意包含標頭檔案std::set and std::multiset associative containers

s.begin()  返回set容器的第乙個元素

s.end()      返回set容器的最後乙個元素

s.clear() 刪除set容器中的所有的元素

s.empty()     判斷set容器是否為空

s.insert() 插入乙個元素

s.erase() 刪除乙個元素

s.size()     返回當前set容器中的元素個數

set模板原型://key為元素(鍵值)型別

template 

key, class

compare=less, class alloc=stl_default_allocator(key) >

2.set容器的建立

#include 

#include

#include

using

namespace

std;

set s;

int main();

set setc(a,a+5); //陣列a初始化乙個set;

set setd(setc.begin(),setc.end()); //setc初始化乙個set

//上述兩例均為區間初始化

set sete(setd); //拷貝構造建立set

return

0;}

3.set容器的增刪改查

①插入

#include 

#include

using

namespace

std;

sets;

void setprint(int cnt)

int main();

s.insert(a,a+4); //將區間[a, a+4]裡的元素插入容器

②刪除

s.erase()       刪除乙個元素

s.clear() 刪除set容器中的所有的元素

#include 

#include

using

namespace

std;

sets;

void setprint(int cnt)

int main()

setprint(cnt++);

s.erase(9); //根據元素刪除

setprint(cnt++);

set::iterator ita = s.begin();

set::iterator itb = s.begin();

s.erase(ita); //刪除迭代器指向位置的元素

setprint(cnt++);

ita = s.begin();

itb = s.begin();

itb++;itb++;

s.erase(ita,itb); //刪除區間[ita,itb)的元素

③修改

不能直接修改容器內資料,所以只能刪除某元素再插入要修改的數值。
④查詢

s.find()        查詢乙個元素,如果容器中不存在該元素,返回值等於s.end()
#include 

4.set的其他常用操作 

s.lower_bound() 返回第乙個大於或等於給定關鍵值的元素

s.upper_bound() 返回第乙個大於給定關鍵值的元素

s.equal_range() 返回一對定位器,分別表示 第乙個大於或等於給定關鍵值的元素 和 第乙個大於給定關鍵值

的元素,這個返回值是乙個pair型別,如果這一對定位器中哪個返回失敗,就會等於

②判斷元素是否在set中 & 判斷set是否為空

③自定義比較函式

#include 

#include

#include

using

namespace

std;

struct cmp

};set

s; //自定義排序函式構造set

以上就是刷題必備的set用法,熟練掌握,要用時別用錯就成。

至於求並、交、差、對稱差等操作,暫不細說,使用時要包含標頭檔案」algorithm」。 

此外還有unordered_set和unordered_multiset,為set和multiset的無序版,使用時要包含標頭檔案」unordered_set」。

C STL set容器常用用法

set是stl中一種標準關聯容器。它底層使用平衡的搜尋樹 紅黑樹實現,插入刪除操作時僅僅需要指標操作節點即可完成,不涉及到記憶體移動和拷貝,所以效率比較高。set,顧名思義是 集合 的意思,在set中元素都是唯一的,而且預設情況下會對元素自動進行公升序排列,支援集合的交 set intersecti...

C STL set容器常用用法

set是stl中一種標準關聯容器。它底層使用平衡的搜尋樹 紅黑樹實現,插入刪除操作時僅僅需要指標操作節點即可完成,不涉及到記憶體移動和拷貝,所以效率比較高。set,顧名思義是 集合 的意思,在set中元素都是唯一的,而且預設情況下會對元素自動進行公升序排列,支援集合的交 set intersecti...

C STL set集合容器常用用法

set集合容器 實現了紅黑樹的平衡二叉檢索樹的資料結構,插入元素時,它會自動調整二叉樹的排列,把元素放到適當的位置,以保證每個子樹根節點鍵值大於左子樹所有節點的鍵值,小於右子樹所有節點的鍵值 另外,還得保證根節點左子樹的高度與右子樹高度相等。平衡二叉檢索樹使用中序遍歷演算法,檢索效率高於vector...