lower_bound & upper_bound
这两个函数是为了支持随机访问迭代器而设计的。
1. lower_bound
模版结构
// 查找第一个【大于或等于】value 的位置
template <class ForwardIt, class T>
ForwardIt lower_bound(ForwardIt first, ForwardIt last, const T& value);
- first / last: 搜索范围(必须是有序序列)。
- value: 要查找的目标值。
- 返回值:返回一个指向该元素的迭代器;如果找不到,则返回 last。
操作示例
vector<int> v = {1, 2, 4, 4, 4, 6, 7};
// 查找第一个 >= 4 的位置
auto it_low = std::lower_bound(v.begin(), v.end(), 4);
// 指向第一个 4 的下标(下标 2)
2. upper_bound
模版结构
// 查找第一个【严格大于】value 的位置
template <class ForwardIt, class T>
ForwardIt upper_bound(ForwardIt first, ForwardIt last, const T& value);
- first / last: 搜索范围(必须是有序序列)。
- value: 要查找的目标值。
- 返回值:返回一个指向该元素的迭代器;如果找不到,则返回 last。

