C++set学习笔记

1. 定义

set需头文件<set>,是有序关联容器(红黑树实现),存储唯一不重复元素,自动按升序排列(默认<比较)。

2. 基本用法

定义:

set<T> name;          //默认升序
set<T,greater<T>> name;//降序

T为元素类型,name为 set 名称。

初始化:

//方式1:默认构造(空set)
set<int>s1;

//方式2:初始化列表(C++11+,自动去重排序)
set<int>s2={3,1,4,1,5};//最终{1,3,4,5}

//方式3:拷贝构造
set<int>s3(s2);

//方式4:自定义降序
set<int,greater<int>>s4={3,1,4};//最终{4,3,1}

3. 核心成员函数

(1)插入与删除

//插入:成功返<迭代器,true>,失败返<迭代器,false>
s1.insert(2);
s1.insert({5,3,7});

//删除:按值/迭代器/范围
s1.erase(3);          //按值删,返1(成功)/0(失败)
s1.erase(s1.begin()); //按迭代器删(首元素)
s1.erase(s1.begin(),s1.find(5));//按范围删[begin,find(5))

//清空
s1.clear();//清空后size=0

(2)查找与统计

//查找:存在返迭代器,不存在返end()
auto it=s2.find(4);
if(it!=s2.end())cout<<"找到:"<<*it<<endl;//输出4

//统计:仅返1(存在)/0(不存在)
int cnt=s2.count(1);//cnt=1
int cnt2=s2.count(2);//cnt2=0

(3)状态查询

//大小
cout<<"size:"<<s2.size()<<endl;//输出4

//判空
if(s1.empty())cout<<"s1空"<<endl;

//首尾元素(迭代器)
cout<<"首元素:"<<*s2.begin()<<endl;//1
cout<<"尾元素:"<<*s2.rbegin()<<endl;//5

遍历可以使用

for(auto i:name)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值