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)

posted @ 2022-05-28 22:02  I_N_V  阅读(82)  评论(0编辑  收藏  举报