C set的常用用法總結

2021-10-03 22:48:20 字數 2875 閱讀 5219

set是stl中一種標準關聯容器。它底層使用平衡的搜尋樹——紅黑樹實現,插入刪除操作時僅僅需要指標操作節點即可完成,不涉及到記憶體移動和拷貝,所以效率比較高。

set顧名思義是「集合」的意思,在set中元素都是唯一的,而且預設情況下會對元素自動進行公升序排列,支援集合的交(set_intersection),差(set_difference) 並(set_union),對稱差(set_symmetric_difference) 等一些集合上的操作,如果需要集合中的元素允許重複那麼可以使用multiset。

使用時注意包含標頭檔案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容器中的元素個數

template , class alloc=stl_default_allocator(key) >
#include #include #include using namespace std;

sets;

int main();

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

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

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

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

return 0;

}

#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)的元素

setprint(cnt);

s.clear();

return 0;

}

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

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

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

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

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

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

C Set常用用法

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

C Set常用用法

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

C Set常用用法

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