欢迎您访问365答案网,请分享给你的朋友!
生活常识 学习资料

set容器

时间:2023-05-31

#include
using std::set;

set可以实现内部自动有序且不含重复元素的容器

1.set的定义

set name;

注意事项等同vector

2.set容器内元素的访问

不同于vector,set内元素只能通过迭代器访问,并且不支持迭代器加整数的行为,如(it+i)i为整数这种写法是不允许的

遍历方式只能是

for(set::iterator it=si.begin();it!=si.end();it++)cout<<*it<

注意:迭代器不支持it 3.set常用函数解析 (1)insert()

insert(x)将x插入set容器中,并自动递增排序和去重,时间复杂度为O(logn),n为set中元素个数

(2)find()

find(value)返回对应值为value的迭代器,时间复杂度为O(logn),n为set中元素个数

set::iterator it=set.find(3);//返回对应值为3的迭代器

(3)erase()

①si.erase(it),it为待删除元素的迭代器。时间复杂度为O(1),可结合find()使用

si.erase(si.find(200));//删除值为200的元素,erase为O(1),find为O(logn)

②si.erase(value),value为一个值。删除值value的元素,时间复杂度O(logn)

si.erase(200);//删除值为200的元素,时间复杂度O(logn)

③si.erase(first,last),删除[first,last)左闭右开区间的元素,时间复杂度O(last-first)

set::iterator it=si.find(30);si.erase(it,si.end());

(4)size()

时间复杂度O(1)

(5)clear()

时间复杂度O(n)

4.常见用途

自动去重并升序排序

如果需要使用不去重的情况,使用multiset

如果需要使用不排序的情况,使用unordered_set(速度远高于set)

Copyright © 2016-2020 www.365daan.com All Rights Reserved. 365答案网 版权所有 备案号:

部分内容来自互联网,版权归原作者所有,如有冒犯请联系我们,我们将在三个工作时内妥善处理。