一、核心定义与核心区别
函数的头文件: #include <algorithm>
lower_bound(下界函数)
功能: 在 [first, last) 区间内,找到第一个大于或等于(≥)目标值 target 的元素,返回其迭代器。
upper_bound(上界函数)
功能: 在 [first, last) 区间内,找到第一个大于(>)目标值 target 的元素,返回其迭代器。
| 函数 | 判断条件 | 定位结果 |
|---|---|---|
| lower_bound | ≥ target | 目标值的'左边界'(包含自身) |
| upper_bound | > target | 目标值的'右边界'(不包含自身) |
二、使用前提与参数说明
1. 必须满足的前提
- 查找区间
[first, last)必须是升序排列的(默认使用<运算符比较)。 - 若区间无序,函数行为未定义(结果不可预测)。
2. 函数参数
1. 默认比较(升序,使用 < 运算符)
template <class ForwardIterator, class T>
ForwardIterator lower_bound (ForwardIterator first, ForwardIterator last, const T& val);
2. 自定义比较(可传入自定义规则,如 greater() 实现降序查找)
template <class ForwardIterator, class T, class Compare>
ForwardIterator lower_bound (ForwardIterator first, ForwardIterator last, const T& val, Compare comp);
upper_bound 参数格式完全相同,仅判断逻辑不同。

