栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

set容器

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

set容器

#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)

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/738440.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号