每次使用 lower_bound 和 upper_bound 的时候,总是有些模糊,有些纠结。
下面我按自己理解的意思将lower_bound和upper_bound 作了一个简单的比较,留个笔记。
1. 函数使用
lower_bound(first, end, val)
upper_bound(first, end, val)
1. lower_bound 和 upper_bound 的用的都是二分查找,故需要给的数组序列是排序的。
2. lower_bound 返回的是第一个 大于等于 val 的位置,upper_bound 返回的是第一个大于val的位置
例如: 有序数组 1, 5, 9, 11, 11, 13
lower_bound(first, end, 5) - first = 1
upper_bound(first, end, 5) - frist = 2
lower_bound(first, end, 6) - first = 2
upper_bound(first, end, 6) - first = 2
lower_bound(first, end, 11) - frist = 3
upper_bound(first, end, 11) - first = 5