lower_bound()、upper_bound()头文件
时间: 2023-10-14 16:04:03 浏览: 90
lower_bound()和upper_bound()函数位于<algorithm>头文件中。 [2 [3<span class="em">1</span><span class="em">2</span><span class="em">3</span>
#### 引用[.reference_title]
- *1* *2* *3* [upper_bound和lower_bound用法(史上最全)](https://blog.csdn.net/weixin_43967256/article/details/127462617)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 100%"]
[ .reference_list ]
相关问题
lower_bound头文件
lower_bound()和upper_bound()函数是C++ STL标准库中的查找函数,它们的底层实现采用二分查找的方式。在使用这两个函数之前,需要添加<algorithm>头文件。
示例代码如下:
```
#include <iostream>
#include <algorithm>
using namespace std;
int main() {
const int n = 6;
int arr[n]{ 0,1,5,8,10,11};
int i_lower = lower_bound(arr, arr+n, 8) - arr; // 返回大于等于8的元素的地址
int i_upper = upper_bound(arr, arr+n, 8) - arr; // 返回大于8的元素的地址
cout << "i_lower:" << i_lower << endl; // i_lower:3
cout << "i_upper:" << i_upper << endl; // i_upper:4
int j_lower = lower_bound(arr, arr+n, 10) - arr;
int j_upper = upper_bound(arr, arr+n, 10) - arr;
cout << "j_lower:" << j_lower << endl; // j_lower:4
cout << "j_upper:" << j_upper << endl; // j_upper:5
return 0;
}
```
请注意,lower_bound()函数返回的是第一个大于等于目标值的元素的地址,而upper_bound()函数返回的是第一个大于目标值的元素的地址。因此,通过减去数组的起始地址,可以得到相应的索引位置。
介绍一下c++中的lower_bound与upper_bound方法
在C++标准库中,`std::lower_bound`和`std::upper_bound`是两个用于对容器中的元素进行区间查找的算法函数。它们通常与`<algorithm>`头文件一起使用。
1. `std::lower_bound`: 这个函数返回第一个大于或等于给定值的迭代器。换句话说,它找到的是输入范围的第一个值,该值不小于目标值,如果目标值本身就存在,那么返回的就是指向该值的迭代器。它的语法通常是这样的:
```cpp
iterator lower_bound(container.begin(), container.end(), value);
```
- `container.begin()` 和 `container.end()` 分别是容器的起始和结束迭代器。
- `value` 是要在范围内查找的目标值。
2. `std::upper_bound`: 类似于`lower_bound`,但它返回的是第一个大于目标值的迭代器,即找不到比目标值更大的元素时,返回的位置将紧接在最后一个大于目标值的元素之后。如果目标值不存在,返回的就是容器结束位置。示例如下:
```cpp
iterator upper_bound(container.begin(), container.end(), value);
```
阅读全文