set容器默认从小到大
set的各成员函数列表如下:
-
begin()–返回指向第一个元素的迭代器
-
clear()–清除所有元素
-
count()–返回某个值元素的个数
-
empty()–如果集合为空,返回true
-
end()–返回指向最后一个元素的迭代器
-
equal_range()–返回集合中与给定值相等的上下限的两个迭代器
-
erase()–删除集合中的元素
-
find()–返回一个指向被查找到元素的迭代器
-
get_allocator()–返回集合的分配器
-
insert()–在集合中插入元素
-
lower_bound()–返回指向大于(或等于)某值的第一个元素的迭代器
-
key_comp()–返回一个用于元素间值比较的函数
-
max_size()–返回集合能容纳的元素的最大限值
-
rbegin()–返回指向集合中最后一个元素的反向迭代器
-
rend()–返回指向集合中第一个元素的反向迭代器
-
size()–集合中元素的数目
-
swap()–交换两个集合变量
-
upper_bound()–返回大于某个值元素的迭代器
-
value_comp()–返回一个用于比较元素间的值的函数
int arr[5] = {0,1,2,3,4};
set<int> iset(arr,arr+5);
set<int> s;
s.insert(1);
s.insert(2);
s.insert(3);
s.insert(1);
s.insert(9);
s.insert(7);
#include<bits/stdc++.h>
using namespace std;
int main()
{
set<int> s;
s.insert(1);
s.insert(2);
s.insert(3);
s.insert(1);
s.insert(9);
s.insert(7);
cout<<"set 的 size 值为 :"<<s.size()<<endl;
cout<<"set 的 maxsize的值为 :"<<s.max_size()<<endl;
cout<<"set 中的第一个元素是 :"<<*s.begin()<<endl;
cout<<"set 中的最后一个元素是:"<<*s.end()<<endl;//end()就是size
set<int>::iterator it;
for(it=s.begin ();it!=s.end ();it++)
{
printf("%d\n",*it);
}
s.clear();
if(s.empty())
{
cout<<"set 为空 !!!"<<endl;
}
cout<<"set 的 size 值为 :"<<s.size()<<endl;
cout<<"set 的 maxsize的值为 :"<<s.max_size()<<endl;
return 0;
}
无法用STL里的sort算法对容器set作排序。set本身就是一种有序的容器。 set主要用于不常变动的数据,对其数据的变动,只能是删除旧的,然后再插入新的,这点从它的iterator就能看出来,它的iterator是const的。你可以在初始化set的时候,指定比较排序的方法,或者干脆把set转换为其它容器(比如vector),然后再排序。 但无法再装入原来的set,因为原来的set的排序方法已被固化了。
#include <iostream>
#include <algorithm>
#include <string>
#include <set>
using namespace std;
int main()
{
int a[100001]= {-1};
int c[100001];
int b[100001];
set<int> s;
ios::sync_with_stdio(false);
cin.tie(0);
int n;
cin>>n;
for(int i=1;i<=n;i++)
{
int x,y;
cin>>x>>y;
a[x]=y;
a[y]=x;
}
int m;
cin>>m;
for(int i=1;i<=m;i++)
{
cin>>b[i];
if(a[b[i]]!=-1)
{
c[a[b[i]]]=1;
}
}
for(int i=1;i<=m;i++)
{
if(!c[b[i]])
s.insert(b[i]);
}
cout<<s.size()<<endl;
set<int>::iterator it;
for(it=s.begin();it!=s.end();it++)
{
if(it==s.begin())
printf("%05d",*it);
else
printf(" %05d",*it);
}
if(s.size())
cout<<endl;
return 0;
return 0;
}