SET使用
来源:互联网 发布:云计算的服务器是什么? 编辑:程序博客网 时间:2024/05/17 09:01
SET函数的基本用法 by hhl
使用set的好处
1. 当增加元素后,集合会自动删重并从小到大排列(时间比快排还快)
2. 相当于一棵伸展树(能快速求出前驱后继)
头文件
#include<set>
定义set函数
set <数据类型(int,long long,double,bool..)> 名称(A,B,C,D...)set <数据类型(int,long long,double,bool..)> :: iterator it//it的作用:*it直接代表集合中的第it个元素
例题
题目:输入n个数,输出一个无重复从小到大的集合。
输入:第一行输入n
第二行输入n个数(a[1],a[2]….a[n])
输出:无重复从小到大的集合
代码:
#include<cstdio>#include<cstring>#include<cstdlib>#include<algorithm>#include<set>using namespace std;set <int> S;set <int> :: iterator it;int a[110];int main(){ int n; scanf("%d",&n); for(int i=1;i<=n;i++) scanf("%d",&a[i]); S.clear(); for(int i=1;i<=n;i++) S.insert(i); for(it=S.begin();it!=S.end();it++)//从集合的开始到末尾输出 { printf("%d\n",*it); } return 0;}
noi 1.10 09:明明的随机数
提交:noi
#include<cstdio>#include<cstring>#include<cstdlib>#include<algorithm>#include<set>using namespace std;set <int> S;set <int> :: iterator it;int a[110];int main(){ int n; scanf("%d",&n); for(int i=1;i<=n;i++) scanf("%d",&a[i]); S.clear(); for(int i=1;i<=n;i++) S.insert(a[i]); printf("%d\n",S.size()); for(it=S.begin();it!=S.end();it++)//从集合的开始到末尾输出 { printf("%d ",*it); } return 0;}
HDU1412: {A} + {B}
提交:HDU1412
#include<cstdio>#include<cstring>#include<cstdlib>#include<algorithm>#include<set>using namespace std;set <int> S;set <int> :: iterator it;set <int> :: iterator it1;int main(){ int n,m; while(scanf("%d%d",&n,&m)!=EOF) { S.clear(); for(int i=1;i<=n+m;i++) { int x; scanf("%d",&x); S.insert(x); } it1=S.end(); it1--; for(it=S.begin();it!=it1;it++) { printf("%d ",*it); } printf("%d\n",*it); } return 0;}
不删重set函数:multiset
multiset与set的区别就是不会删重,但是依旧会从小到大排列
set中使用的函数在multiset同样适用
multiset的头文件
#include<set>
multiset的定义方式
multiset <数据类型(int,long long,double,bool..)> 名称(A,B,C,D...)multiset <数据类型(int,long long,double,bool..)> :: iterator it//it的作用:*it直接代表集合中的第it个元素
练习:noi 3.9 3341 Set
SET MULTISET 常用函数
使用:S.函数名()begin()--返回指向第一个元素的迭代器clear()--清除所有元素count()--返回某个值元素的个数empty()--如果集合为空,返回trueend()--返回指向最后一个元素的迭代器equal_range()--返回集合中与给定值相等的上下限的两个迭代erase()--删除集合中的元素find()--返回一个指向被查找到元素的迭代器get_allocator()--返回集合的分配器insert()--在集合中插入元素lower_bound()--返回指向大于(或等于)某值的第一个元素的key_comp()--返回一个用于元素间值比较的函数max_size()--返回集合能容纳的元素的最大限值rbegin()--返回指向集合中最后一个元素的反向迭代器rend()--返回指向集合中第一个元素的反向迭代器size()--集合中元素的数目swap()--交换两个集合变量upper_bound()--返回大于某个值元素的迭代器value_comp()--返回一个用于比较元素间的值的函数
1 0
- set使用
- SET使用
- 使用set
- 使用SET NOCOUNT ON
- stl set的使用
- 使用循环遍历Set
- 使用 SET NOCOUNT ON
- set的使用
- set insert使用
- oracle set 使用详解
- windows环境变量 set使用
- windows环境变量 set使用
- set的使用
- Set与MultiSet使用
- Working Set 的使用
- 使用Set Factory
- Set的使用
- set模板初使用
- Express+MongoDB架构webserver(入门)
- Marshal类
- curl模拟get和post请求
- 《从零开始学Swift》学习笔记(Day4)——用Playground工具编写Swift
- DistBelief 框架下的并行随机梯度下降法 - Downpour SGD
- SET使用
- 《我的RobotFramework书》1-5 测试库, Test Library
- 直接获取当前页面URL中参数的值
- 「线性代数」chapter1线性代数中的线性方程组
- 通过数组和枚举简化GPIO操作编码
- Android版本列表
- 前置++和后置++的区别
- 利用EF来进行数据库的操作
- 《从零开始学Swift》学习笔记(Day5)——我所知道的标识符和关键字