标签:范围 out fir 相同 常用函数 tput 出现 col input
1.关于set的概念
set 是STL中的集合。
集合我们都很熟悉,具有排异性,在这里set中也遵循这条规矩。 而且在set中,存在系统自动排序的操作。
2.set的常用函数
set 与 vector具有类似的用法
#include<set> //set 的头文件 set<int> s; //声明一个int型set变量,名为s s.empty(); //判定 s 是否为空 s.insert(1); //把数字1插入到s中 s.clear(); //清空s s.erase(1); //假若s存在1,则删除1 s.begin(); //返回s中第一个元素地址 所以 *s.begin() s.end(); //返回s中最后一个元素地址 //这个特殊一点,返回的是s中最后一个元素的下一个元素 //所以 *(--s.end())是s最后一个元素 *s.rbegin(); //rbegin可以看做逆向的第一个地址 相当于(--s.end()) 此处取的已经是s最后一个元素 *s.rend(); //rend可以看做逆向的最后一个地址 相当于 s.begin() s.count(1); //计算s中1出现的次数,而次数只存在0与1,所以可以借来查找是否存在1 s.size(); //返回s中元素的个数 s.max_size(); //s最大能存元素的数目 *s.find(2); //查找2 ,返回value所在位置,找不到value将返回end()
s1.swap(s2); //交换两个集合变量
set<int>::iterator iter; //迭代器
#include<iostream> #include<set> #include<vector> using namespace std; int main() { vector<int> a; a.push_back(1); a.push_back(2); a.insert(a.begin(),3);//在向量起始位置增加新元素。vector中用insert插入时,须提供插入的位置 a.insert(a.end(),3);//在向量末尾追加新元素。 cout<<a[0]<<endl; cout<<a.at(1)<<endl; cout<<*a.begin()<<endl; cout<<a[2]<<endl; cout<<"set集开始"<<endl; set<int> s; //set没有push_back()/pop_back(),也不能用s[i],at(i)取值 s.insert(1); s.insert(2); cout<<*s.begin()<<endl; cout<<*s.rbegin()<<endl; cout<<*s.rend()<<endl; cout<<*s.find(0)<<endl; return 0; }
输出结果:
3
1
3
2
set集开始
1
2
1
2
erase(iterator) ,删除定位器iterator指向的值
erase(first,second),删除定位器first和second之间的值
erase(key_value),删除键值key_value的值
//lower_bound(key_value) ,返回第一个大于等于key_value的定位器 //upper_bound(key_value), 返回最后一个大于等于key_value的定位器 #include <iostream> #include <set> using namespace std; int main() { set<int> s; s.insert(1); s.insert(3); s.insert(4); cout<<*s.lower_bound(2)<<endl; cout<<*s.lower_bound(3)<<endl; cout<<*s.upper_bound(3)<<endl; return 0; }
输出结果:
3
3
4
练习题
Problem Description 给你两个集合,要求{A} + {B}. 注:同一个集合中不会有两个相同的元素.
Input 每组输入数据分为三行,第一行有两个数字n,m(0<n,m<=10000),分别表示集合A和集合B的元素个数.后两行分别表示集合A和集合B.每个元素为不超出int范围的整数,每个元素之间有一个空格隔开.
Output 针对每组数据输出一行数据,表示合并后的集合,要求从小到大输出,每个元素之间有一个空格隔开.
Sample Input
1 2
1
2 3
1 2
1
1 2
Sample Output
1 2 3
1 2
#include<iostream> #include<set> using namespace std; int main() { int n,m,x; set<int>s; set<int>::iterator it; while (cin>>n>>m){ s.clear(); for (int i=0;i<n+m;i++){ cin>>x; s.insert(x); } it=s.begin(); int cnt=s.size(); for (int i=1;i<=cnt;i++){ if (i==1) cout<<*it; else cout<<" "<<*it; it++; } cout<<endl; } return 0; }
标签:范围 out fir 相同 常用函数 tput 出现 col input
原文地址:https://www.cnblogs.com/LXJ-YZ/p/13166086.html