stl equal_range的比较器这样用

本文详细解析了STL中equal_range函数的比较器使用误区,指出其并非简单等于比较,而是遵循排序规则。通过源码分析,揭示了equal_range实际通过lower_bound和upper_bound寻找指定值的边界,为理解和正确使用该函数提供了清晰指导。

stl equal_range的比较器不是我以为的那样,看过源码,查了别人的资料才了解

我以为equal_range的比较器一定是[](val a, val b){return a == b;}, 实际上,它跟sort的比较器是一样的。是[](val a, val b){return a < b;}(假如升序排列的话)。

看源码,先二分找到一个it, 此it符合如下条件:!_Pre(*it, val) && !Pre(val, *it),翻译成汉语的话就是,*it == val, 就是找到一个在equal_range范围的指针,然后用lower_bound,upper_bound找到两头的指针,返回就可以了。

就是这样的。 

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值