彙總了一些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)如果元素是結構體,可以直接將比較函式寫在結構體內。
structinfo
}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...