【发布时间】:2014-06-26 14:20:04
【问题描述】:
STL 提供二分查找函数 std::lower_bound 和 std::upper_bound, 但我倾向于不使用它们,因为我无法记住它们的作用, 因为他们的合同对我来说似乎完全是个谜。
只看名字,
我猜“lower_bound”可能是“last lower bound”的缩写,
即排序列表中的最后一个元素
同样,我猜“upper_bound”可能是“第一个上限”的缩写,
即排序列表中 >= 给定 val(如果有)的第一个元素。
但是文档说他们做的事情与此完全不同——
对我来说,这似乎是一种倒退和随机的混合。
套用文档:
- lower_bound 找到 >= val
的第一个元素
- upper_bound 找到 > val
所以 lower_bound 根本找不到下限;它找到第一个 upper 边界!? 而upper_bound 会找到第一个严格上限。
这有意义吗?? 你怎么记得的?
【问题讨论】:
标签: c++ stl lower-bound upperbound