set的用法
1.set简介:
set是一个内部有序且不重复的集合,当需要对数据进行去重或者排序时,我们可以用set进行存储。
2.set的定义;
set<typename> name;
set<typename> Arrayname[arraysize];//定义set数组
set<int> a[100]//例
3.set的访问
set区别于vector的访问方法是,set只可以用迭代器来进行访问
int a[5]={1,2,3,4,5};
set<int> b(a,a+5);
for(set<int>::iterator it=b.begin();it!=b.end();it++)
cout <<*it<<' '<<endl;
cout <<*b.begin()<<' ' <<*b.end();//区别于vector
4.set几个常见的操作:
在这(1)begin()//cout <<*s.begin();
(2)end()
(3)clear()
(4)empty()
(5)size()
(6)count()
(7)equal_range()//pair<set<int>::const_iterator,set<int>::const_iterator> pr;
//pr=s.equal_range();cout <<pr.first<<' ' <<pr.second
(8)erase(iterator)//删除迭代器指向的值
(9)erase(first,second)//删除两个迭代器之间的值
(10)erase(key_value)//删除该值
(11)insert(key_vlue)
(12)int a[]={};s.insert(a,a+3);
(13)lower_bound(key_value)//返回大于或等于该值的第一个迭代器cout <<*s.lower_bound(3)
(14)upper_bound(key_value)//返回大于该值的第一个迭代器
set<int> s;
int n,x;
cin >>n;
for(int i=0; i<n; i++)
{
cin >>x;
s.insert(x);
}
for(set<int>::iterator it=s.begin(); it!=s.end(); it++)
cout <<*it<<' ';
cout <<endl;
cout <<"begin_num is:"<<*s.begin()<<endl;
cout <<"end_num is:"<<*s.end()<<endl;
cout <<"count_num:"<<s.count(10)<<endl;//返回元素的个数
cout <<"lower_bound_num is"<<*s.lower_bound(3)<<endl;//返回小于或等于3的第一个迭代器
cout <<"upper_bound_num is"<<*s.upper_bound(3)<<endl;//返回大于3的第一个迭代器
pair<set<int>::const_iterator,set<int>::const_iterator> pr;
pr=s.equal_range(3);
cout <<"第一个大于等于3的数:"<<*pr.first<<endl;
cout <<"第一个大于3的数:"<<*pr.second<<endl;
set<int> ss;
for(int i=1; i<=5; i++)
ss.insert(i);
set<int>::iterator second;
set<int>::iterator first;
first=ss.begin();
second=ss.begin();
second++;
second++;
ss.erase(3);//删除迭代器指向的值ss.erase(iterator)
ss.erase(first,second);//删除迭代器first、second之间的值
ss.erase(1);//删除键值ss.erase(key_value)
for(set<int>::iterator it=ss.begin(); it!=ss.end(); it++)
cout <<*it<<' ' ;
ss.insert(50);
cout <<*(ss.find(50));//返回给定值的迭代器里插入代码片
5.题目练习:
PAT——A1063