C++ lower_bound 的库使用和自己实现
1. 库函数的使用
功能:查找一个数组中的第一个大于或等于指定值的数。返回一个迭代器。
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
int main() {
vector<int> 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
2. 基于二分查找的自己实现
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
int lower_bound(vector<int>& 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<int> 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;
}
本文介绍了C++中lower_bound函数的使用,该函数用于在排序数组中找到第一个大于或等于指定值的元素。首先展示了库函数的用法,然后详细解释了如何基于二分查找自实现lower_bound函数。示例代码清晰地展示了这两个方法,并在main函数中进行了测试。
1480

被折叠的 条评论
为什么被折叠?



