set 的用法

简介:

set是一个去除掉数组中重复元素并进行排序的集合,学过python的同学应该知道python里面的set类,不一样的地方在于C++类库的set会自动将数组进行排序。

如果需要只进行排序当不进行去重,则使用multiset;

如果只去重不排序则使用unorder_set;

类型名作用头文件
set<elemType>name去重并且排序

#include<set>

using namespace std;

multiset<elemType>name;只排序不去重

#include<set>

using namespace std;

unordered_set<elemType> name;只去重不排序

#include<unordered_set>

using namesp

这三种集合在pat中都是支持的。

定义:

如上表

元素访问:

在set中只能通过迭代器来进行访问,因为在插入元素的过程中,set会自动去掉重复的元素,如果按照数组下标来进行访问的话很容易越界。

//name为之前定义的set	
for(set<int>::iterator it=name.begin();it!=name.end();it++){
		printf("%d\t",*it);
	}

数据插入:

只能使用insert来进行插入。

相关函数:

函数作用时间复杂度
insert()插入元素O(logN)
find()返回元素的指针

O(logN)

erase()去除元素(一般和find进行配合)删除方式不同,时间复杂度不同
size()返回元素个数O(1)
clear()清空set的所有元素O(N)

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值