📅  最后修改于: 2023-12-03 15:21:29.685000             🧑  作者: Mango
下界即 lower bound,指在一个有序数组中,找到第一个大于等于某个值的元素所在位置。在 C++ 中,使用 lower_bound
函数来实现。
下界的使用场景可以举一个简单的例子:有一组排好序的数,需要在其中查找第一个等于或大于某个值的元素,那么下界函数可以方便地实现这个需求。
lower_bound
函数定义如下:
template<class ForwardIt, class T>
ForwardIt lower_bound(ForwardIt first, ForwardIt last, const T& value);
first
和 last
参数指定一个前闭后开的区间,这个区间内包含了要查找的元素;value
参数是我们要查找的值;value
的元素。下面是一个简单的示例代码,演示了如何在一个有序数组中查找一个元素的下界:
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
int main()
{
vector<int> vec = { 1, 2, 2, 3, 5, 6 };
int x = 2;
auto it = lower_bound(vec.begin(), vec.end(), x);
cout << "The lower bound for " << x << " is at position "
<< it - vec.begin() << endl;
return 0;
}
输出:
The lower bound for 2 is at position 1
上述代码在一个有序的 vector
容器中查找元素 2
的下界。输出结果是 1,说明元素 2
第一次出现的位置在容器的第 1 个位置(C++ 中数组下标从 0 开始),也就是说,如果要将元素 2
插入到这个容器中,应该插在第 1 个位置。
下界是 STL 中的一个常用算法,可以在有序数组中查找第一个不小于指定元素的位置。下界函数 lower_bound
是一个非常实用的工具,可以方便地帮助我们实现各种需求。