cpp中lower_bound()
时间: 2024-04-10 19:24:53 浏览: 15
在C++中,`lower_bound()`是一个用于在有序容器(如数组、向量、集合、映射等)中查找某个值的函数。它返回一个迭代器,指向第一个大于或等于给定值的元素。
`lower_bound()`函数的使用方式如下:
```cpp
#include <algorithm>
#include <vector>
int main() {
std::vector<int> vec = {1, 2, 3, 4, 5};
// 使用lower_bound()查找值为3的元素
auto it = std::lower_bound(vec.begin(), vec.end(), 3);
if (it != vec.end()) {
// 找到了值为3的元素
std::cout << "找到了值为3的元素,位置为:" << std::distance(vec.begin(), it) << std::endl;
} else {
// 没有找到值为3的元素
std::cout << "没有找到值为3的元素" << std::endl;
}
return 0;
}
```
上述代码中,`lower_bound()`函数被用来查找值为3的元素。如果找到了该元素,则返回指向该元素的迭代器;如果没有找到,则返回指向第一个大于3的元素的迭代器。
相关问题
C++中lower_bound
在C++中,`lower_bound`是一个用于在有序容器(如数组、向量、集合、映射等)中查找某个值的函数。它返回一个迭代器,指向第一个大于或等于给定值的元素位置。
`lower_bound`函数的使用方式如下:
```cpp
#include <algorithm>
#include <vector>
int main() {
std::vector<int> nums = {1, 2, 3, 4, 5, 6};
int target = 3;
auto it = std::lower_bound(nums.begin(), nums.end(), target);
if (it != nums.end()) {
// 找到了目标值或者第一个大于目标值的元素
int index = std::distance(nums.begin(), it);
std::cout << "找到了目标值 " << target << ",位置为 " << index << std::endl;
} else {
// 没有找到目标值
std::cout << "没有找到目标值 " << target << std::endl;
}
return 0;
}
```
在上述示例中,我们定义了一个有序的整数向量`nums`,并指定了目标值`target`为3。然后,我们使用`lower_bound`函数在`nums`中查找目标值。如果找到了目标值或者第一个大于目标值的元素,就输出其位置;否则,输出未找到的提示。
c++中lower_bound
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()` 来判断是否找到了符合条件的元素。