set是stl中一種標準關聯容器。它底層使用平衡的搜尋樹——紅黑樹實現,插入刪除操作時僅僅需要指標操作節點即可完成,不涉及到記憶體移動和拷貝,所以效率比較高。set,顧名思義是「集合」的意思,在set中元素都是唯一的,而且預設情況下會對元素自動進行公升序排列,支援集合的交(set_intersection),差(set_difference) 並(set_union),對稱差(set_symmetric_difference) 等一些集合上的操作,如果需要集合中的元素允許重複那麼可以使用multiset。
1.set容器的常用操作
使用時注意包含標頭檔案std::set and std::multiset associative containers
s.begin() 返回set容器的第乙個元素
s.end() 返回set容器的最後乙個元素
s.clear() 刪除set容器中的所有的元素
s.empty() 判斷set容器是否為空
s.insert() 插入乙個元素
s.erase() 刪除乙個元素
s.size() 返回當前set容器中的元素個數
set模板原型://key為元素(鍵值)型別
template
key, class
compare=less, class alloc=stl_default_allocator(key) >
2.set容器的建立
#include
#include
#include
using
namespace
std;
set s;
int main();
set setc(a,a+5); //陣列a初始化乙個set;
set setd(setc.begin(),setc.end()); //setc初始化乙個set
//上述兩例均為區間初始化
set sete(setd); //拷貝構造建立set
return
0;}
3.set容器的增刪改查
①插入
#include
#include
using
namespace
std;
sets;
void setprint(int cnt)
int main();
s.insert(a,a+4); //將區間[a, a+4]裡的元素插入容器
②刪除
s.erase() 刪除乙個元素
s.clear() 刪除set容器中的所有的元素
#include
#include
using
namespace
std;
sets;
void setprint(int cnt)
int main()
setprint(cnt++);
s.erase(9); //根據元素刪除
setprint(cnt++);
set::iterator ita = s.begin();
set::iterator itb = s.begin();
s.erase(ita); //刪除迭代器指向位置的元素
setprint(cnt++);
ita = s.begin();
itb = s.begin();
itb++;itb++;
s.erase(ita,itb); //刪除區間[ita,itb)的元素
③修改
不能直接修改容器內資料,所以只能刪除某元素再插入要修改的數值。
④查詢
s.find() 查詢乙個元素,如果容器中不存在該元素,返回值等於s.end()
#include
4.set的其他常用操作
①
s.lower_bound() 返回第乙個大於或等於給定關鍵值的元素
s.upper_bound() 返回第乙個大於給定關鍵值的元素
s.equal_range() 返回一對定位器,分別表示 第乙個大於或等於給定關鍵值的元素 和 第乙個大於給定關鍵值
的元素,這個返回值是乙個pair型別,如果這一對定位器中哪個返回失敗,就會等於
②判斷元素是否在set中 & 判斷set是否為空
③自定義比較函式
#include
#include
#include
using
namespace
std;
struct cmp
};set
s; //自定義排序函式構造set
以上就是刷題必備的set用法,熟練掌握,要用時別用錯就成。
至於求並、交、差、對稱差等操作,暫不細說,使用時要包含標頭檔案」algorithm」。
此外還有unordered_set和unordered_multiset,為set和multiset的無序版,使用時要包含標頭檔案」unordered_set」。
C STL set容器常用用法
set是stl中一種標準關聯容器。它底層使用平衡的搜尋樹 紅黑樹實現,插入刪除操作時僅僅需要指標操作節點即可完成,不涉及到記憶體移動和拷貝,所以效率比較高。set,顧名思義是 集合 的意思,在set中元素都是唯一的,而且預設情況下會對元素自動進行公升序排列,支援集合的交 set intersecti...
C STL set容器常用用法
set是stl中一種標準關聯容器。它底層使用平衡的搜尋樹 紅黑樹實現,插入刪除操作時僅僅需要指標操作節點即可完成,不涉及到記憶體移動和拷貝,所以效率比較高。set,顧名思義是 集合 的意思,在set中元素都是唯一的,而且預設情況下會對元素自動進行公升序排列,支援集合的交 set intersecti...
C STL set集合容器常用用法
set集合容器 實現了紅黑樹的平衡二叉檢索樹的資料結構,插入元素時,它會自動調整二叉樹的排列,把元素放到適當的位置,以保證每個子樹根節點鍵值大於左子樹所有節點的鍵值,小於右子樹所有節點的鍵值 另外,還得保證根節點左子樹的高度與右子樹高度相等。平衡二叉檢索樹使用中序遍歷演算法,檢索效率高於vector...