C STL set集合容器

2022-03-14 09:22:58 字數 1647 閱讀 7275

彙總了一些set的常用語句,部分參考了這篇:

#include

實現了紅黑樹的平衡二叉檢索樹的資料結構,插入元素時,它會自動調整二叉樹的排列,把元素放到適當的位置,以保證每個子樹根節點鍵值大於左子樹所有節

點的鍵值,小於右子樹所有節點的鍵值;另外,還得保證根節點左子樹的高度與右子樹高度相等。

平衡二叉檢索樹使用中序遍歷演算法,檢索效率高於vector、deque和list等容器,另外使用中序遍歷可將鍵值按照從小到大遍歷出來。

構造set集合主要目的是為了快速檢索,不可直接去修改鍵值。

set p; //集合容器,沒有重複元素

multiset p; //集合容器,有重複元素

p.insert(k); //將k加入集合p中

p.size(); //返回元素個數

p.empty(); //判斷是否為空

p.clear(); //清除所有元素

p.erase(k); //將集合中元素k刪去

p.count(k); //返回某個值元素的個數(只對multiset有效,set的count()值只有0和1)

set::iterator it; //定義迭代器

set::reverse_iterator it; //定義反向迭代器

it=p.begin(); //指向頭

it=p.end(); //指向末尾,末尾不包含元素

it=rbegin() //返回指向集合中最後乙個元素的反向迭代器

it=rend() //返回指向集合中第乙個元素的反向迭代器

it=p.find(k); //返回乙個指向被查詢到元素的迭代器,如果沒有找到返回p.end();

正向遍歷

for (set

::iterator it=p.begin();it!=p.end();it++)

//輸出元素,預設按照公升序排序

/*注意迭代器指標不能進行四則運算,只能自增自減*/

/*set的插入,查詢,刪除操作複雜度均為o(log(n))*/

其他不常用的函式:

equal_range()    返回集合中與給定值相等的上下限的兩個迭代器

get_allocator()    返回集合的分配器

lower_bound()    返回指向大於(或等於)某值的第乙個元素的迭代器

key_comp()    返回乙個用於元素間值比較的函式

max_size()    返回集合能容納的元素的最大限值

swap()    交換兩個集合變數

upper_bound()    返回大於某個值元素的迭代器

value_comp()     返回乙個用於比較元素間的值的函式

自定義比較函式

(1)元素不是結構體:

//

自定義比較函式mycomp,過載「()」操作符

struct

mycomp

}set

s;......

set::iterator it;

(2)如果元素是結構體,可以直接將比較函式寫在結構體內。

struct

info

}set

s;......

set::iterator it;

C STL set集合容器常見用法

set集合容器 實現了紅黑樹的平衡二叉檢索樹的資料結構,插入元素時,它會自動調整二叉樹的排列,把元素放到適當的位置,以保證每個子樹根節點鍵值大於左子樹所有節點的鍵值,小於右子樹所有節點的鍵值 常見操作 1.元素插入 insert 2.元素查詢 find 3.元素刪除 erase 下面是乙個簡單的二叉...

C STL set集合容器常用用法

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

C STL set集合容器常用用法

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