強大的set容器

2021-10-25 09:27:46 字數 1293 閱讀 3205

建議先看stl裡的map,該文章中的set只是對stl的一種補充,事實上map的功能比set強大很多,基本上用set能實現的功能用map也能實現

用法

作用s.begin(), s.end()

返回集合的首尾迭代器

s.insert(k)

向集合中加入元素k

s.earse(k)

刪除集合中元素k

s.size()

返回當前集合的元素個數

s.find(k)

返回集合中指向元素k的迭代器。如果不存在這個元素,就返回s.end()

s.empty()

返回當前集合是否為空,是返回1,否則返回0

s.clear()

清空當前集合。

s.upper_bound()

返回乙個鍵值大於k的第乙個元素的迭代器

s.lower_bound

返回乙個鍵值大於等於k的第乙個元素的迭代器

用法與map大量相似,這裡只簡單介紹下二者的區別

查詢值

set不像map有鍵值和value,需要用it->first和it->second來返回對應的鍵值和value。set只有乙個數值,取其數值只需要對迭代器進行取值符號即可

int

main()

二分查詢的函式

set支援lower_bound和upper_bound函式,可以查詢鍵值大於k的第乙個元素的迭代器

int

main()

事實上也可以用另一種方法實現,就是先將k插入,然後去查詢k所對應的迭代器的下一位,返回其值並將k刪除即可

set<

int>s;

intmain()

else

return0;

}

map一般用來實現有關字串的對應值問題,而set更加關注數字集合的關係,使用set一般是為了解決兩個問題:去重和排序

不再展示其用法

使用set會自動排序,如果我只想去重,不想排序怎麼辦??

set容器 map容器

簡介 本質 set和multiset區別 構造 賦值 include void printset set int s cout endl 構造和賦值 void test01 intmain 總結 函式原型 include void printset set int s cout endl 大小 vo...

Set容器的使用

set容器只是單純鍵的集合,如果想知道乙個值是否存在時,使用set容器比較合適。set容器中的鍵也是唯一的,不能修改,且set容器不能使用下標操作。以下使用程式說明set容器的使用 定義 插入 獲取 等 include stdafx.h include include include using n...

set 容器的運用

簡單題 可以優先佇列 vector 但set容器更為簡單 題目描述 在學習operating system的過程中,glory遇到了這樣乙個問題,現在有乙個大小為可以容納n個頁面的記憶體,硬碟內的內容被分成m個頁面,用1 m來標識,一開始記憶體裡沒有任何頁面,接下來使用者會請求q個頁面,你需要設計乙...