set是stl中一種標準關聯容器。它底層使用平衡的搜尋樹——紅黑樹實現,插入刪除操作時僅僅需要指標操作節點即可完成,不涉及到記憶體移動和拷貝,所以效率比較高。set,顧名思義是「集合」的意思,在set中元素都是唯一的,而且預設情況下會對元素自動進行公升序排列,支援集合的交(set_intersection),差(set_difference) 並(set_union),對稱差(set_symmetric_difference) 等一些集合上的操作,如果需要集合中的元素允許重複那麼可以使用multiset。
下面介紹set的常用操作:
1:注意包含標頭檔案
set只有自加和自減運算!!!
s.begin() 返回set容器的第乙個元素的位址
s.end() 返回set容器的最後乙個元素之後的位址
s.clear() 刪除set容器中的所有的元素
s.empty() 判斷set容器是否為空
s.insert() 插入乙個元素
s.erase() 刪除乙個元素
s.size() 返回當前set容器中的元素個數
具體看**:
#include#includeusing
namespace
std;
intmain()
迭代器的使用:
#include#includeusing
namespace
std;
intmain()
修改:不能修改容器內資料,所以只能刪除某元素再插入要修改的數值
查詢:s.find()
如果容器內不存在該元素,返回值等於s.end();
#include#includeusing
namespace
std;
intmain()
set的其它常用操作:
s.lower_bound() 返回第乙個大於或等於給定關鍵值的元素
s.upper_bound() 返回第乙個大於給定關鍵值的元素
s.equal_range() 返回一對定位器,分別表示 第乙個大於或等於給定關鍵值的元素 和 第乙個大於給定關鍵值
的元素,這個返回值是乙個pair型別,如果這一對定位器中哪個返回失敗,就會等於
s.end()
#include#includeusing
namespace
std;
intmain()
如果要把set定義為降序:可以如下定義:
#include#includeusing
namespace
std;
intmain()
set命令的學習
有時候我們需要直接在原變數進行加減操作就可以用這種語法 set a var 1 這樣的語法對應原始語法就是set a var var 1 都是一樣的結果。對於 邏輯或取餘操作符 我們需要把他們用雙引號引起來,看例子 複製 如下 set a var 1 1 這樣結果就顯示出來了,其他邏輯或取餘操作符用...
set集合的學習
set介面裡面的集合,所儲存的元素就是不重複的。hashset可查重,使用hashset自定義泛型時,可在泛型類中新增equals 和hashcode 自動生成方法,實現相等的元素查重 treeset可排序,使用treeset自定義泛型時,即可在泛型類中實現介面自動新增實現方法 override p...
學習筆記 set的使用
set預設進行公升序排列,通過結構體可以改。維護乙個比主人公分數高的set 降序排列,比主人公高就進入set 比主人公低就不進去,或者在刪除操作裡刪掉。然後血的教訓 include using namespace std const int maxn 1e5 7 struct node s maxn...