STL 提供了二进制搜索函数 std: : low _ bound 和 std: : Upper _ bound, 但我一般不用它们因为我记不起来它们是干什么的, 因为他们的合同对我来说太神秘了。
光看名字,
我猜“下界”可能是“最后一个下界”的缩写,
例如,排序列表中的最后一个元素是 < = 给定的 val (如果有的话)。
同样,我猜“上界”可能是“第一个上界”的缩写,
例如,排序列表中的第一个元素是 > = 给定的 val (如果有的话)。
但是文件上说他们做了一些与此完全不同的事情
对我来说,这似乎是一个混合的倒退和随机。
套用医生的话:
- lower _ bound 找到第一个 > = val 的元素
上限找到第一个元素 > val
所以下界根本不会找到下界; 它会找到第一个 上界! ? 并且上界找到第一个 严格的上限绑定。
这说得通吗? 你怎么记得的?