#include


set

\(set\)頭文件主要包括\(set\)\(multiset\)兩個容器。他們都是有序集合,不過\(set\)存的元素不可重復。

兩者內部實現都是紅黑樹,在使用方法上差別不大,支持的函數基本相同。

聲明方式

set<int> s;
multiset<int> t;
set<int>::iterator it;

\(s\)\(t\)都是維護\(int\)類型數據的有序容器,其中\(t\)內的元素可重。迭代器\(it\)僅支持\(++\)\(--\)。我們以\(int\)類型的數據為例:

s.size()​

返回元素個數。

s.empty()​

判斷\(set\)是否為空,為空則是邏輯真,否則就是邏輯假。

s.clear()​

清空\(set\)

s.begin()/s.end()​

返回\(set\)的首迭代器和尾迭代器。左閉右開,所以尾迭代器為空。

s.insert(x)/s.erase(it/x)​

插入一個\(int\)類型的數據,刪除一個迭代器或者元素\(x\)。如果\(x\)已經是在集合中的了,並且是\(set\)而不是\(multiset\),那么就不會執行插入操作。時間復雜度為\(O(log)\)。如果是\(multiset\)則會把所有等於\(x\)的元素全部刪除,復雜度為\(O(log+k)\)\(k\)為元素個數。

s.find(x)​

查找等於\(x\)的元素,返回一個迭代器。若不存在,則返回\(s.end()\)。復雜度\(O(log)\)的。

s.lower_bound(x)/s.upper_bound(x)

第一個是找\(set\)中大於等於\(x\)的最小的元素,第二個是找\(set\)中嚴格大於\(x\)的最小的元素,以迭代器的形式返回。時間復雜度為\(O(log)\)。若不存在,則返回\(s.end\)()。

s.count(x)

返回集合中等於\(x\)的元素個數。復雜度為\(O(log+k)\)\(k\)為元素個數。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM