C++ multiset 學習筆記


https://www.luogu.org/blog/yu123123/Templet

set和multiset會根據特定的排序原則將元素排序。兩者不同之處在於,multisets允許元素重復,而set不允許重復。

基本的操作函數:

1.Basics

創建一個set/multiset:

這里以multiset為例子:

multiset<int> s;

創建一個int類的multiset

s.max_size()返回最多容納的元素個數

s.size()當前容器中的元素個數

s.empty()判斷容器是否為空

2.特殊的搜索函數

multiset <int,greater<int> > s;創建一個從大到小排序的類型

multiset<int,less<int>> s;創建一個從小到大排序的類型(也就是默認)

s.begin(),s.end();

返回s的首/尾迭代器

s.count(x)查詢容器中x元素的出現次數

s.find(x) 查詢容器中x元素的第一次出現位置,如果沒有返回s.end();

s.lower_bound(x) 返回一個迭代器,標記s中出現的第一個大於等於x的元素位置

s.upper_bound(x) 返回一個迭代器,標記s中出現的第一個大於x的元素位置

s.insert(x) 在s容器中插入x元素

for(multiset<int>::iterator it=s.begin();it!=s.end();it++)
printf("%d ",*it);如何遍歷一個s容器

s.erase()當無參數的時候會將整個容器中的元素全部刪掉!

s.erase(pos)只會刪除迭代器pos所指向的元素

s.erase(l,r) 會刪除區間[l,r)內的所有元素!

https://www.jianshu.com/p/ecd7f66e11d3

#include <set> #include <iostream> using namespace std; int main() { ///1. 初始化 multiset<int> num; multiset<int>::iterator iter,beg,end; cout << num.max_size() << endl;///multiset容納上限 cout << endl; ///2. 添加元素 for (int i = 0; i < 10; i++) num.insert(i); cout << num.size() << endl; cout << endl; ///3. 遍歷 for (iter = num.begin(); iter != num.end(); iter++) cout << *iter << " " ; cout << endl; cout << endl; ///4. 查詢 iter = num.find(1); if (iter != num.end()) cout << *iter << endl; else cout << -1 << endl; iter = num.find(99); if (iter != num.end()) cout << *iter << endl; else cout << -1 << endl; cout << endl; beg=num.lower_bound(2); end=num.upper_bound(7); for (; beg != end; beg++) cout << *beg << " " ; cout << endl; ///5. 刪除 iter = num.find(1); num.erase(iter); cout << num.size() << endl; for (iter = num.begin(); iter != num.end(); iter++) cout << *iter << " " ; cout << endl; cout << endl; ///6. 判空與清空 if (!num.empty()) num.clear(); } 

 

 


免責聲明!

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



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