相关疑难解决方法(0)

std :: lower_bound和std :: upper_bound的基本原理?

STL提供了二进制搜索函数std :: lower_bound和std :: upper_bound,但我倾向于不使用它们,因为我无法记住它们的作用,因为它们的合同对我来说似乎完全不可思议.

只是从查看名称,我猜"lower_bound"可能是"last lower bound"的缩写,
即排序列表中的最后一个元素<=给定的val(如果有的话).
同样地,我猜"upper_bound"可能是"第一个上限"的缩写,
即排序列表中的第一个元素> =给定的val(如果有的话).

但文档说他们做了一些与此截然不同的事情 - 对我来说似乎是倒退和随机的混合.要解释doc:
- lower_bound找到第一个元素> = val
- upper_bound找到第一个元素> val

所以lower_bound根本找不到下限; 它找到了第一个上限!?并且upper_bound找到第一个严格的上限.

这有意义吗??你怎么记得的?

c++ stl lower-bound upperbound

55
推荐指数
5
解决办法
2万
查看次数

标签 统计

c++ ×1

lower-bound ×1

stl ×1

upperbound ×1