set的用法

我发现set这东西很有用.....

它可以去重并且排序,多有用啊!set是用红黑树来维护的,不过这高端的东西我这个蒟蒻还没有学,所以具体原理也不知道。

最常用的set用法:

s.clear()清空。

s.insert(x)将元素x插入一个set中

s.erase(x)删除键值为x的元素

s.find(x)返回键值为x的元素的迭代器

s.begin()和s.end()是返回开头和结尾处的迭代器,set内的元素是已经排好序的,所以s.begin()处的元素是最小的,s.end()已经超出了set的范围,而其前面一个数是set里最大的。

s.lower_bound(x),类似于lower_bound(s.begin(),s.end(),x)操作,但是会快一些(因为set的性质吧)

一道set用法练习题:明明的随机数(这题大家都做过吧....)

#include<iostream>
#include<cstdio>
#include<cstring>
#include<climits>
#include<iomanip>
#include<set>
#include<algorithm>
using namespace std;
set<int>a;
int main()
{
   	int i,n,x;
   	scanf("%d",&n);
   	for(i=1;i<=n;i++){
   		scanf("%d",&x);a.insert(x);
   	}
   	x=a.size();
   	printf("%d\n",x);
   	for(set<int>::iterator j=a.begin();j!=a.end();j++)
   		printf("%d ",*j);
   	return 0;
} 


  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值