set/multiset
生活随笔
收集整理的這篇文章主要介紹了
set/multiset
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
set/multiset
特性
????set保證出現(xiàn)在set內(nèi)的元素只出現(xiàn)一次,且按照字典序從小大到大排序
初始化
① 初始化一個集合
set<int> S;
② 復(fù)制一個集合
set <int > Ss(S);
求長度(時間復(fù)雜度為O(1))
set<int> s;
s.size();
判空(時間復(fù)雜度為O(1))
a.empty();
清空
a.clear();
刪除元素/插入元素
a.erase(1); // 刪除為1的那個值 ,時間復(fù)雜度為O(logn )
a.erase(a.begin()); // 刪除set的第一個元素
a.erase(iterator::it1, iterator::it2); // 刪除[it1, it2)
a.insert(1); // 插入一個元素1
判斷一個數(shù)是否出現(xiàn)過
a.count(x); // 判斷x是否在集合中出現(xiàn)過,如果出現(xiàn)過返回1,否則0
迭代器
a.begin(); // 第一個元素的迭代器
a.end(); // 最后一個元素的下一位的迭代器
遍歷
1.迭代器遍歷
for (set<int> ::iterator it = S.begin(); it != S.end(); ++it)
cout << *it ;
2. c++方式遍歷
for (auto Si: S) cout << Si << ends;
查找(支持lower_bound() 和 upper_bound()操作)
set<int> S;
S.insert(1);
S.insert(2);
set <int> ::iterator it1 = S.lower_bound(2);
if (it1 != S.end()) cout << *it1;
else cout << 0;
set <int> ::iterator it2 = S.find(2);
S.erase(it2);
multiset的性質(zhì)和set一樣,上面全是set的特性,而multiset在set的特性之上使得一個集合內(nèi)可以出現(xiàn)多次同一個元素,multiset內(nèi)的元素也是按照字典序排好序的
multiset <int> s;
s.insert(1);
s.insert(1);
for (auto si: s) cout << si << ends;
輸出
1 1
????在s.erase(int x)時,會刪除所有出現(xiàn)的x,時間復(fù)雜度為O(logn + k) (k為出現(xiàn)次數(shù))
multiset <int> s;
s.insert(1);
s.insert(1);
s.erase(1);
cout << s.empty();
輸出
1
總結(jié)
以上是生活随笔為你收集整理的set/multiset的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 将VScdoe的R终端替换为radian
- 下一篇: 微信小程序 服务通知推送 (发送模板消息