set集合容器:實現了紅黑樹的平衡二叉檢索樹的資料結構,插入元素時,它會自動調整二叉樹的排列,把元素放到適當的位置,以保證每個子樹根節點鍵值大於左子樹所有節點的鍵值,小於右子樹所有節點的鍵值;另外,還得保證根節點左子樹的高度與右子樹高度相等。
平衡二叉檢索樹使用中序遍歷演算法,檢索效率高於vector、deque和list等容器,另外使用中序遍歷可將鍵值按照從小到大遍歷出來。
構造set集合主要目的是為了快速檢索,不可直接去修改鍵值。
常用操作:
1.元素插入:insert()
2.中序遍歷:類似vector遍歷(用迭代器)
3.反向遍歷:利用反向迭代器reverse_iterator。
例:sets;
......
set::reverse_iterator rit;
for(rit=s.rbegin();rit!=s.rend();rit++)
4.元素刪除:與插入一樣,可以高效的刪除,並自動調整使紅黑樹平衡。
sets;
s.erase(2); //刪除鍵值為2的元素
s.clear();
5.元素檢索:find(),若找到,返回該鍵值迭代器的位置,否則,返回最後乙個元素後面乙個位置。
sets;
set::iterator it;
it=s.find(5); //查詢鍵值為5的元素
if(it!=s.end()) //找到
cout<<*it<
else //未找到
cout<<"未找到";
6.自定義比較函式
(1)元素不是結構體:
例://自定義比較函式mycomp,過載「()」操作符
struct mycomp
}sets;
......
set::iterator it;
(2)如果元素是結構體,可以直接將比較函式寫在結構體內。
例:struct info
}sets;
......
set::iterator it;
初識了解ES6 Set
es6 提供了新的資料結構 set。它類似於陣列,但是成員的值都是唯一的,沒有重複的值。可以通過add 方法向 set 結構加入成員 const s newset 2,3,5,4,5,2,2 foreach x s.add x for let i of s set函式可以接受乙個陣列 或者具有 it...
set的應用例項
include include include include using namespace std struct employee 預設建構函式 employee long eid,string e name,float e salary attribute public long id emp...
set的簡單應用
首先我們看題。題目 牛牛想嘗試一些新的料理,每個料理需要一些不同的材料,問完成所有的料理需要準備多少種不同的材料。輸入描述 每個輸入包含 1 個測試用例。每個測試用例的第 i 行,表示完成第 i 件料理需要哪些材料,各個材料用空格隔開,輸入只包含大寫英文本母和空格,輸入檔案不超過 50 行,每一行不...