Set&multiset用法
multiset和set一样使用,只是multiset可以有重复
下面用set举例
#include <bits/stdc++.h>
using namespace std;
int main(){
set<int>s;
s.insert(1);
s.insert(2);
s.insert(100);
s.insert(2);
s.insert(45);
cout<<s.count(2)<<endl; //s.count(x) x的个数
//set输出1 因为set里没有重复
//multiset 输出2
for(auto it=s.begin();it!=s.end();it++){
cout<<(*it)<<" ";
//输出为 1 2 45 100
//set内的元素自动递增排序,且自动祛除了重复元素,multiset不去除重复元素
}
puts("");
auto F=s.lower_bound(2); //第一个大于等于2的数
cout<<(*F)<<endl; //输出2
F=s.upper_bound(2); //第一个大于2的数
cout<<(*F)<<endl; //输出45
puts("");
auto x=s.find(2); //寻找set中值为x的迭代器
s.erase(x); //x为迭代器时,删除元素的迭代器,可与find连用:s.erase(st.find(2))找到x后删除
for(auto it=s.begin();it!=s.end();it++){
cout<<(*it)<<" ";
//输出为 1 45 100
}
puts("");
auto l=s.find(1),r=s.find(45);
s.erase(l,r); //删除一个区间内的所有元素,左闭右开区间
cout<<s.size()<<endl; //输出2 s内元素个数
for(auto it=s.begin();it!=s.end();it++){
cout<<(*it)<<" ";
//输出为 45 100
}
s.clear(); //清空
return 0;
}
特别注意:
multiset中count的时间复杂度是O(元素 x 个数+logn)