一句话理解
lower_bound 在有序区间找第一个大于等于 x 的位置。
为什么要学
二分查找的标准库版本。
讲解
返回迭代器。减 begin() 得到下标。区间必须已经升序。
找不到(都比 x 小)会返回 end。
例子
int a[5] = {1, 3, 3, 7, 9};
int i = lower_bound(a, a + 5, 3) - a;
cout << i;
输出:
1
第一个 >=3 的是下标 1 的那个 3。
常见错误
- 数组没排序就 lower_bound,结果无定义。
- 当成找等于 x,忽略可能找到的是更大的数。