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
)/列印s2中3出現的次數
}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...