c++中的有序集合

有序集合是C++中一种基于红黑树实现的关联容器,保证元素唯一且有序。插入、删除和查找操作的时间复杂度为O(logn)。不能直接修改元素,需删除后重新插入。find函数用于精确查找,lower_bound和upper_bound则支持模糊查找。
摘要由CSDN通过智能技术生成

概念

首先我们先了解一下,有序集合是一种关联式容器,键值对相等,里面的元素互不重复,且是有序的。底层用红黑树实现,对元素的增、删、查找是O(logn)时间复杂度。
下面是增、删、查找的一些基础操作。

c++中的有序集合

集合的定义使用

#include<set>
set<int> intSet;
set<srting> intString;

别忘了引入头文件set,我们首先定义了一个int的集合,和一个string的集合

对集合进行操作

1.插入

intSet.insert(5);

int集合中插入了一个常量5。
2.访问
注意在set中并没有对[]运算符进行重载,这个一定要注意,第一次学习时就把set和我们只能用find()方法去找一个值。

3.删除

inSet.erase(5);
stringSet.erase("hello");

删除直接使用erase方法。
4.修改
注意,set容器不允许改变一个元素的值,我们只能删除后再添加一个值。

intSet.erase(5);
intSet.insert(7)

这个代码实现了一个删除5,添加7的效果。

4.find函数精确查找元素

auto iter = inSet.find(5);
if(iter == inSet.end()){
 cout<<"没找到"<<endl;
}
else{
cout<<"找到了<<*iter<< endl;
}

这里要注意find函数如果找到了就会返回该元素的迭代器,如果没有找到则会返回inSet.end()
5.用lower_bound或者upper_bound进行模糊查找

auto iter = inSet.upper_bound(5);
if(iter == inSet.end()){
cout << "没找到"<< endl;
}
else {
cout<< *iter<< endl;

lower_bound用于找大于等于参数值的第一个元素
upper_bound用于找大于参数值的第一个元素

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值