关于set
1.元素独一无二。
2.元素从小到大排列,通过二分查找树实现。
#include<set>
using namespace std;
一.构造类函数
缺省构造函数、拷贝构造函数、迭代器构造函数
#include<iostream>
#include<set>
using namespace std;
int main()
{
set<int> s1;//构造函数
set<int> ::iterator it;//相当于指针
int a[]={3,4,5,1,2};
set<int> s2(a,a+5);//利用指针初始化
set<int> s3(s2);//复制构造函数
cout<<"集合s3中的元素为:"<<endl;
for(it=s3.begin();it!=s3.end();it++)//判断条件中it不能用大于小于号
{
cout<<*it<<" ";
}
}
【运行结果】
集合s3中的元素:
1 2 3 4 5
二.迭代器类函数
begin()//返回set容器中第一个元素的位置
end()//返回set容器中第一个元素的下一个位置
rbegin()//返回set容器中最大元素的位置
rend()//返回set容器中最小元素的前一个位置
#include<iostream>
#include<set>
using namespace std;
using namespace std;
int main()
{
set<int> s1;//构造函数
set<int> ::iterator it;//迭代器,相当于指针
set<int> ::reverse_iterator rit;//反向迭代器
int a[]={3,4,5,1,2};
set<int> s2(a,a+5);//利用指针初始化
set<int> s3(s2);//复制构造函数
cout<<"集合s3中的元素为:"<<endl;
for(it=s3.begin();it!=s3.end();it++)//判断条件中it不能用大于小于号
{
cout<<*it<<" ";
}
cout<<endl<<"集合s3中的元素为:"<<endl;
for(rit=s3.rbegin();rit!=s3.rend();rit++)//判断条件中it不能用大于小于号
{
cout<<*rit<<" ";
}
}
【运行结果】
集合s3中的元素:
1 2 3 4 5
集合s3中的元素:
5 4 3 2 1
三.容器类函数
empty()//如果set容器为空返回true;否则,返回false。
size()//返回set容器中元素个数
max_size()//返回set容器中能容纳的最大元素个数
int main()
{
set<int> s1;//构造函数
set<int> ::iterator it;//相当于指针
int a[]={3,4,5,1,2};
set<int> s2(a,a+5);//利用指针初始化
set<int> s3(s2);//复制构造函数
if(s1.empty())
cout <<"s1为空"<<endl;
else
cout<<"s1非空"<<endl;
cout<<s2.size()<<endl;
cout<<s2.max_size()<<endl;
}
【运行结果】
s1为空
5
461168601842738790
四.操作类函数
insert()//在set中插入一个元素
s.insert(6)
swap()//交换两个集合中的元素
s1.swap(s2)//交换s1和s2中的元素
erase()//删除set中指定元素
erase(iterator it)//删除迭代器it指向的元素
erase(5)//删除5这个元素,如果5存在,函数返回1;否则,返回0
clear()//清空当前set中的元素,实际上调用erase(begin(),end())
s.clear()//删除s中所有元素
find()//查找set中的元素x,找到返回x的迭代器,没找到返回end的值
iterator it=s.find(x)//将x的迭代器返回给it
count()//统计set中某一个元素个数,由于set容器中不允许出现相同元素,找到返回1,否则返回0
lower_bound()//返回第一个不小于元素x的迭代器
upper_bound()//返回第一个大于元素x的迭代器