set介紹以及使用 c

2021-10-08 20:23:14 字數 3738 閱讀 5181

set是按照一定次序儲存元素的容器

在set中,元素的value也標識它(value就是key,型別為t),並且每個value必須是唯一的。set中的元素 不能在容器中修改(元素總是const),但是可以從容器中插入或刪除它們。

在內部,set中的元素總是按照其內部比較物件(型別比較)所指示的特定嚴格弱排序準則進行排序。

set容器通過key訪問單個元素的速度通常比unordered_set容器慢,但它們允許根據順序對子集進行直接迭代。

set在底層是用二叉搜尋樹(紅黑樹)實現的。

1.set的構造

set (const compare& comp = compare(), const allocator& = allocator() );------------------------構造空的set

set (inputiterator first, inputiterator last, const compare& comp = compare(), const allocator& = allocator() );-------------------用[first, last)區間 中的元素構造set

set ( const set& x); ------------set的拷貝構造

2.set的迭代器

iterator begin() ------------返回set中起始位置元素的迭代器

iterator end() ---------------返回set中最後乙個元素後面的迭代器

const_iterator cbegin() const ----------返回set中起始位置元素的const迭代器

const_iterator cend() const ----------返回set中最後乙個元素後面的const迭代器

reverse_iterator rbegin() ----------返回set第乙個元素的反向迭代器,即end

reverse_iterator rend()----------返回set最後乙個元素下乙個位置的反向迭代器,即 rbegin

const_reverse_iterator crbegin() const----------返回set第乙個元素的反向const迭代器,即cend

const_reverse_iterator crend() const----------返回set最後乙個元素下乙個位置的反向const迭代器,即crbegin

3.set的容量

bool empty ( ) const ------檢測set是否為空,空返回true,否則返回true

size_type size() const -------返回set中有效元素的個數

4.set的修改

pairinsert ( const value_type& x )---------------在set中插入元素x,實際插入的是構成的鍵值對, 如果插入成功,返回《該元素在set中的位置,true>,如果 插入失敗,說明x在set中已經存在,返回

void erase ( iterator position )-------- 刪除set中position位置上的元素

size_type erase ( const key_type& x )--------刪除set中值為x的元素,返回刪除的元素的個數

void erase ( iterator first, iterator last )--------刪除set中[first, last)區間中的元素

void swap ( set& st );--------交換set中的元素

void clear ( ) --------將set中的元素清空

iterator find ( const key_type& x ) const--------返回set中值為x的元素的位置

size_type count ( const key_type& x ) const--------返回set中值為x的元素的個數

#include

#include

#include

using

namespace std;

void

test()

; set<

int,greater<

int>>

>

s1(array,array+5)

;//通過array陣列構建s2,這裡用到greater及由大到小順序排列

set<

int>

s2(array,array+5)

; set<

int, greater<

int>>

copy

(s1)

;//set的拷貝構造

set<

int, greater<

int>>

::iterator it = s1.

begin()

;//使用set迭代器

//set元素不能修改

//遍歷有序: 搜尋樹的中序遍歷

while

(it != s1.

end())

cout << endl;

//set的反向迭代器

set<

int, greater<

int>>

::reverse_iterator rit = s1.

rbegin()

;while

(rit != s1.

rend()

) cout << endl;

s2,insert(6

)//s2中插入6

s2.insert(6

);//插入會失敗,set中不會插入重複的元素

s2.insert

(s2.

begin()

,15);

//在s2.begin()位置插入15,但是實際還是按照大小順序插入,順序為0,1,2,3,4,6,15

int array2=

; s2.

insert

(array2, array2 +4)

;//在s2中插入array2的元素,同樣也不會有重複並且按照大小順序插入

//刪除最左值

s2.erase

(s2.

begin()

);auto it = s2.

begin()

;auto it2 =

++s2.

begin()

; cout <<

*it << endl;

cout <<

*it2 << endl;

//刪除會導致當前位置的迭代器失效, 不影響其他位置的迭代器,失效的迭代器需要重新獲取

s2.erase

(it)

; cout <<

*it2 << endl;

//set的查詢

set<

int>

::iterator it = s2.

find(3

);if(it != s2.

end())

cout <<

*it << endl;

else

cout <<

"未找到"

<< endl;

cout

)

}int

main()

set的介紹及使用

1 set是按照一定的次序儲存元素的容器 2 在set中,元素value也標識它 value就是key,型別為t 並且每個value必須是惟一的 3 set允許插入和刪除,不允許修改 4 set按照內部比較物件 型別比較 所指示的特定嚴格弱排序準則進行排序 5 set在底層用二叉搜尋樹 紅黑樹 實現...

set 命令介紹

c documents andsettings administrator help set 顯示 設定或刪除 cmd.exe 環境變數。set variable string variable 指定環境變數名。string 指定要指派給變數的一系列字串。要顯示當前環境變數,鍵入不帶引數的 set。...

Set介面介紹

set介面定義 collection介面可以存放重複元素,也可以存放不重複元素。list可以存放重複元素,set就是不重複的元素。通過元素的equals方法,來判斷是否為重複元素。set集合取出元素的方式可以採用 迭代器,增強 for hashset 雜湊表 此類實現了set介面,由雜湊表 實際是h...