STL set的介紹與使用

2021-09-19 16:44:15 字數 2095 閱讀 3732

/*

c++ stl 之所以得到廣泛的讚譽,也被很多人使用,不只是提供了像vector, string, list等方便的容器,

更重要的是stl封裝了許多複雜的資料結構演算法和大量常用資料結構操作。vector封裝陣列,list封裝了鍊錶,

map和set封裝了二叉樹等,在封裝這些資料結構的時候,stl按照程式設計師的使用習慣,以成員函式方式提供的常用操作,

如:插入、排序、刪除、查詢等。讓使用者在stl使用過程中,並不會感到陌生。

關於set,必須說明的是set關聯式容器。set作為乙個容器也是用來儲存同一資料型別的資料型別,

並且能從乙個資料集合中取出資料,在set中每個元素的值都唯一,而且系統能根據元素的值自動進行排序。

應該注意的是set中數元素的值不能直接被改變。

c++ stl中標準關聯容器set, multiset, map, multimap內部採用的就是一種非常高效的平衡檢索二叉樹:紅黑樹,

也成為rb樹(red-black tree)。rb樹的統計效能要好於一般平衡二叉樹,所以被stl選擇作為了關聯容器的內部結構。

set使用方法:

begin()    ,返回set容器的第乙個迭代器

end()      ,返回set容器的尾後迭代器

clear()  ,刪除set容器中的所有的元素

empty()    ,判斷set容器是否為空

max_size()   ,返回set容器可能包含的元素最大個數

size()      ,返回當前set容器中的元素個數

rbegin     ,返回的值和end()相同

rend()     ,返回的值和rbegin()相同

erase(iterator) ,刪除定位器iterator指向的值

erase(first,second),刪除定位器first和second之間的值

erase(key_value),刪除鍵值key_value的值

find(key_value);查詢關鍵字,返回迭代器,沒找到返回end()

*/

#include

#include

#include

using

namespace std;

intmain()

cout <<

"set 中 1 出現的次數是 :"

<< s.

count(1

)<< endl;

//1 cout <<

"set 中 4 出現的次數是 :"

<< s.

count(4

)<< endl;

//0//3、刪除

/* //第一種刪除

s.erase(s.begin());

//第二種刪除

set::const_iterator iter;

set::iterator first;

set::iterator second;

first = s.begin();

second = s.begin();

second++;

second++;

s.erase(first, second);

*///第三種刪除

s.erase(2

);//erase(key_value),

cout <<

"刪除後 set 中元素是 :"

;for

(auto iter = s.

begin()

; iter != s.

end();

++iter)

cout << endl;

s.insert(2

);//4、查詢

auto itfind = s.

find(2

);if(itfind != s.

end())

//5、清除

s.clear()

;if(s.empty()

) cout <<

"set 的 size 值為 :"

<< s.

size()

<< endl;

return0;

}

stl set使用模板

明明想在學校中請一些同學一起做一項問卷調查,為了實驗的客觀性,他先用計算機生成了n個1到1000之間的隨機整數 n 100 對於其中重複的數字,只保留乙個,把其餘相同的數去掉,不同的數對應著不同的學生的學號。然後再把這些數從小到大排序,按照排好的順序去找同學做調查。請你協助明明完成 去重 與 排序 ...

STL set與迭代器

set與迭代器 set.insert elem 在容器中插入元素。set.begin 返回容器中第乙個資料的迭代器。set.end 返回容器中最後乙個資料之後的迭代器。set.rbegin 返回容器中倒數第乙個元素的迭代器。set.rend 返回容器中倒數最後乙個元素的後面的迭代器。set int ...

STL set 使用方法小結

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