/* set
set和multiset会根据特定的排序原则将元素排序。 set中的元素没有重复,并且默认从小到大排序
两者不同之处在于,multisets允许元素重复,而set不允许重复。
set和multiset会根据特定的排序原则将元素排序。 set中的元素没有重复,并且默认从小到大排序
两者不同之处在于,multisets允许元素重复,而set不允许重复。
常用操作
set<int> s 定义一个set容器 类型为int型
s.begin() 返回指向第一个元素的迭代器
s.clear() 清除所有元素
s.count() 返回某个值元素的个数
s.empty() 如果集合为空,返回true
s.end() 返回指向最后一个元素之后的迭代器,不是最后一个元素
s.erase() 删除集合中的元素
s.find() 返回一个指向被查找到元素的迭代器,如果没找到则返回end()
s.insert() 在集合中插入元素
s.size() 集合中元素的数目
s.swap() 交换两个集合变量
set<int> s 定义一个set容器 类型为int型
s.begin() 返回指向第一个元素的迭代器
s.clear() 清除所有元素
s.count() 返回某个值元素的个数
s.empty() 如果集合为空,返回true
s.end() 返回指向最后一个元素之后的迭代器,不是最后一个元素
s.erase() 删除集合中的元素
s.find() 返回一个指向被查找到元素的迭代器,如果没找到则返回end()
s.insert() 在集合中插入元素
s.size() 集合中元素的数目
s.swap() 交换两个集合变量
例子:
#include <iostream>
#include <set>
using namespace std;
int main()
{
int i;
set<int> set1;
for(i=0; i<10; ++i)
set1.insert(i);
set<int>::iterator it;
for(it=set1.begin(); it!=set1.end(); it++)
cout<<*it<<" ";
cout<<endl;
set1.erase(5);
if(set1.insert(3).second)//把3插入到set1中,插入成功则set1.insert(3).second返回1,否则返回0.
cout<<"set insert success";
else
cout<<"set insert failed";
cout<<endl;
set<int>::iterator itr;
for(itr=set1.begin(); itr!=set1.end(); itr++)
cout<<*itr<<" ";
set1.clear();
return 0;
}
#include <iostream>
#include <set>
using namespace std;
int main()
{
int i;
set<int> set1;
for(i=0; i<10; ++i)
set1.insert(i);
set<int>::iterator it;
for(it=set1.begin(); it!=set1.end(); it++)
cout<<*it<<" ";
cout<<endl;
set1.erase(5);
if(set1.insert(3).second)//把3插入到set1中,插入成功则set1.insert(3).second返回1,否则返回0.
cout<<"set insert success";
else
cout<<"set insert failed";
cout<<endl;
set<int>::iterator itr;
for(itr=set1.begin(); itr!=set1.end(); itr++)
cout<<*itr<<" ";
set1.clear();
return 0;
}
#include<bits/stdc++.h>
using namespace std;
set<int>s;
int a[105];
int main() {
int n;
cin>>n;
for(int i=0; i<n; i++) {
cin>>a[i];
s.insert(a[i]);
}
cout<<s.size()<<endl;
while(!s.empty()) {
cout<<*s.begin()<<" "; //注意此处的用法
s.erase(s.begin());
}
return 0;
}