set容器的一些用法

2021-08-09 22:19:22 字數 1165 閱讀 5245

set集合容器:實現了紅黑樹的平衡二叉檢索樹的資料結構,插入元素時,它會自動調整二叉樹的排列,把元素放到適當的位置,以保證每個子樹根節點鍵值大於左子樹所有節點的鍵值,小於右子樹所有節點的鍵值;另外,還得保證根節點左子樹的高度與右子樹高度相等。平衡二叉檢索樹使用中序遍歷演算法,檢索效率高於vector、deque和list等容器,另外使用中序遍歷可將鍵值按照從小到大遍歷出來。構造set集合主要目的是為了快速檢索,不可直接去修改鍵值。

1.元素插入:insert()

2.中序遍歷:類似vector遍歷(用迭代器)

3.反向遍歷:利用反向迭代器reverse_iterator。

set

s;......

set::reverse_iterator rit;

for(rit=s.rbegin();rit!=s.rend();rit++)

4.元素刪除:與插入一樣,可以高效的刪除,並自動調整使紅黑樹平衡。
set

s;s.erase(2); //刪除鍵值為2的元素

s.clear();

5.元素檢索:find(),若找到,返回該鍵值迭代器的位置,否則,返回最後乙個元素後面乙個位置。
set

s;set::iterator it;

it=s.find(5); //查詢鍵值為5的元素

if(it!=s.end()) //找到

cout

<<*it//未找到

cout

<<"未找到";

6.自定義比較函式
struct mycomp

}set

s;......

set::iterator it;

7、如果元素是結構體,可以直接將比較函式寫在結構體內
struct info

{ string name;

float score;

//過載「<」操作符,自定義排序規則

bool

operator

< (const info &a) const

{//按score從大到小排列

return a.scoreset

s;......

set::iterator it;

set容器的用法

所有元素都會根據元素的鍵值自動排序,set元素的鍵值就是實值,實值就是鍵值。set不允許兩個元素有相同的鍵值。set的元素不像map那樣可以同時擁有實值 value 和鍵值 key set成員函式列表如下 begin 返回指向第乙個元素的迭代器 clear 清除所有元素 count 返回某個值元素的...

set容器的用法

set是一種關聯容器,儲存有序且唯一的鍵值 其大多用法和vector相同就不多加解釋,只闡述它的特殊性 我個人認為set容器的侷限性還是比較大的,僅認為set可以在排序和清除不必要元素時使用,因為set遍歷的時候只可以用迭代器,而且在刪除元素時不方便。刪除鍵值除外 1.標頭檔案 2.新增元素 a.i...

redis中set集合的一些用法

一.set型別 set是乙個集合,它是string型別的無序集合,set是通過hash table實現的,新增,刪除,查詢的時間複雜度都是o 1 對於集合我們可以取並集,交集,差集。通過這些操作我們可以實現sns中好友推薦和blog的tag功能。set常見操作 1 sadd 向乙個集合中新增乙個元素...