深入学习C++(STL容器,set)

本文深入解析C++98标准库中的set与multiset数据结构,介绍其存储特性、算法函数及使用方法。set存储唯一且有序的元素,multiset允许存储重复元素,两者均基于二叉树实现,提供高效的查找、插入与删除操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

set multiset 是c++98中引入的二叉树数据结构

namespace std{
template<typename T,typename Compare = less<T>,typename Allocator =allocator<T>>
class set;
template<typename T,typename Compare = less<T>,typename Allocator =allocator<T>>
class multiset;
}

set存储的是不重复的元素,自动将元素排序,插入和删除查找o(logn),1000个元素大概查找20次,元素必须支持严格的弱排序

(1)x<x 恒等于false

(2)x<y ==true y<x ==false

set中元素的值不能够被改变

//算法函数

using Group = set<float>;
Group a;
auto num = a.count(1.0f);    //set中查找元素是否存在,返回0或1
//multiset count 返回的值是>=0, 存在返回他所存在的数量

//对于返回的迭代器的值一定要判断是否有效
auto findTter = a.find(1.0f);   //返回的是迭代器 还得做一次比较才知道是否存在
if(findIter == a.end()){
//  not  finded
}else{
*findTter;
}
auto lower = a.lower_bound(1.0f);  //返回低端部分,返回的是迭代器
auto upper = a.upper_bound(1.0f);
//假如要查找1.0,set中已经存在了,lower_bound返回的值是大于等于1.0值的位置,upper_bound返回
//的值是大于1.0位置的值

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值