lower_bound
作用: 返回第一个 大于等于 (>=) 指定值的元素的迭代器。
如果值存在: 返回该值的第一个位置。
如果值不存在: 返回比目标值 大的第一个元素 位置。
如果所有元素都小于目标值: 返回 end() 迭代器。
反向查找 \(\color{red}{小于}\) 目标值的元素: lower_bound 返回的迭代器减一,即 lower_bound(vec.begin(), vec.end(), target) - 1。
upper_bound
作用: 返回第一个 大于 (>) 指定值的元素的迭代器。
如果值存在: 跳过所有相同值,返回比目标值 大的第一个元素 位置。
如果值不存在: 返回比目标值 大的第一个元素 位置。
如果所有元素都小于等于目标值: 返回 end() 迭代器。
反向查找 \(\color{red}{小于等于}\) 目标值的元素: upper_bound 返回的迭代器减一,即 upper_bound(vec.begin(), vec.end(), target) - 1。