c++中lower_bound
时间: 2023-08-20 14:10:41 浏览: 101
lower_bound 是 C++ 中的一个算法函数,用于在有序(升序)的容器中查找第一个大于或等于给定值的元素的位置。
函数原型如下:
```cpp
template <class ForwardIterator, class T>
ForwardIterator lower_bound (ForwardIterator first, ForwardIterator last, const T& val);
```
其中,`ForwardIterator` 是指向容器中元素的迭代器类型,`T` 是要查找的值的类型。
函数的返回值是一个迭代器,指向第一个大于或等于给定值的元素的位置。如果容器中不存在大于或等于给定值的元素,返回的是 `last` 迭代器。
下面是一个示例使用 lower_bound 的代码:
```cpp
#include <iostream>
#include <vector>
#include <algorithm>
int main() {
std::vector<int> vec = {1, 3, 5, 7, 9};
int target = 6;
auto it = std::lower_bound(vec.begin(), vec.end(), target);
if (it != vec.end()) {
std::cout << "The first element greater than or equal to " << target << " is: " << *it << std::endl;
} else {
std::cout << "No element greater than or equal to " << target << " found." << std::endl;
}
return 0;
}
```
以上代码将输出:
```
The first element greater than or equal to 6 is: 7
```
这里,lower_bound 在有序的容器 `vec` 中查找第一个大于或等于 `target`(即 6)的元素,找到后返回指向该元素的迭代器 `it`。然后我们通过 `*it` 来获取该元素的值。如果找不到大于或等于 `target` 的元素,lower_bound 将返回 `vec.end()`,我们可以通过判断迭代器是否等于 `vec.end()` 来判断是否找到了符合条件的元素。
阅读全文