C++STL(set……)
阿新 • • 發佈:2021-08-30
set
底層實現是用紅黑樹。
set 建立
set<int> s; // 不可重,預設升序
set<int,less> s; // 不可重,升序
set<int,greater> s; // 不可重,降序
multiset<int> s; // 可重集
set 也可以過載,利用結構體實現。
過載方式同 priority_queue 。
set 插入及訪問
set<int>::iterator it; s.insert(x); // 插入元素 x s.begin(); // 最前面的迭代器 s.end(); // 最後一個元素之後的迭代器(實則空) s.rbegin(); // 最後一個迭代器 s.rend(); // 最前面的前一個迭代器 pair<set<int>::iterator,bool> it=s.insert(x); if(it.second) { 插入成功 } else { 插入失敗 }
set 大小
set.size(); //返回容器中元素的數目
set.empty(); //判斷容器是否為空
set 的刪除操作
set.clear(); //清除所有元素
set.erase(it); //刪除 it 迭代器所指的元素,返回下一個元素的迭代器。
set.erase(l,r); //刪除區間 [l,r) 的所有元素,返回下一個元素的迭代器。
set.erase(x); //刪除容器中值為 x 的元素。
set 的查詢操作
set.find(x); //查詢 x 元素,返回指向 x 元素的迭代器。 set.count(x); //返回容器中值為 x 的元素個數。對 set 來說,要麼是 0,要麼是 1。對 multiset 來說,值可能大於 1。 set.lower_bound(x); //返回第一個 >=x 元素的迭代器 set.upper_bound(x); // 返回第一個 >x 元素的迭代器。 set.equal_range(x); //返回容器中與 x 相等的上下限的兩個迭代器。上限是閉區間,下限是開區間,如 [l,r) 。