功能:查找一个数组中的第一个大于或等于指定值的数。返回一个迭代器。
#include2. 基于二分查找的自己实现#include #include using namespace std; int main() { vector nums = {1, 4, 5, 5, 8, 9, 3, 2}; sort(nums.begin(), nums.end()); //注意传入之前需要进行排序 auto it = lower_bound(nums.begin(), nums.end(), 6); if (it != nums.end()) { cout << "第一个不小于 6 的数值为:" << *it << endl; } return 0; } // 输出: 第一个不小于 6 的数值为:8
#include#include #include using namespace std; int lower_bound(vector & nums, int target) { int n = nums.size(); int left = 0, right = n - 1; while (left < right) { // 退出循环时只有left=right一种可能 int mid = left + ((right - left) >> 1); if (nums[mid] < target) { left = mid + 1; //不断缩小左边界 } else { right = mid; } } return nums[left] >= target ? nums[left] : INT_MAX; //没有找到的话就返回INT_MAX; } int main() { //库函数实现 vector nums = {1, 4, 5, 5, 8, 9, 3, 2}; sort(nums.begin(), nums.end()); auto it = lower_bound(nums.begin(), nums.end(), 6); if (it != nums.end()) { cout << "第一个不小于 6 的数值为:" << *it << endl; } //自己实现 int res = lower_bound(nums, 10); //cout << res << endl; return 0; }



