upper_bound 用于在已排序的序列中查找第一个大于给定值的元素位置。基本语法// 在 [first, last) 范围内查找第一个大于 value 的元素 auto it upper_bound(first, last, value);与相关函数的对比函数作用返回值lower_bound第一个大于等于​ value 的元素迭代器upper_bound第一个大于​ value 的元素迭代器示例代码#include iostream #include vector #include algorithm using namespace std; int main() { vectorint nums {1, 2, 2, 3, 3, 3, 4, 5}; // 查找第一个大于 3 的元素 auto it upper_bound(nums.begin(), nums.end(), 3); auto it2 lower_bound(nums.begin(), nums.end(), 3); if (it ! nums.end()) { cout 第一个大于3的元素是: *it endl; // 输出 4 cout 位置索引: it - nums.begin() endl; // 输出 6 } cout---------------------------------endl; if (it2 ! nums.end()) { cout 第一个大于等于3的元素是: *it2 endl; // 输出 3 cout 位置索引: it2 - nums.begin() endl; // 输出 3 } return 0; }注意点1upper_bound只能在已排序的序列上工作2返回值是迭代器需要转换为索引或直接使用3时间复杂度O(log n) 的二分查找很高效4边界检查记得检查返回值是否等于 end()表示没找到