c++中lower_bound用法
时间: 2023-11-19 07:53:26 浏览: 90
在C++中,lower_bound是一个STL算法,用于在有序序列中查找第一个大于或等于给定值的元素的位置。它的语法如下:
```c++
template <class ForwardIterator, class T>
ForwardIterator lower_bound (ForwardIterator first, ForwardIterator last, const T& val);
```
其中,first和last是指向序列的迭代器,val是要查找的值。lower_bound返回一个迭代器,指向第一个大于或等于val的元素位置。
下面是一个示例代码:
```c++
#include <iostream>
#include <algorithm>
#include <vector>
using namespace std;
int main() {
vector<int> v = {1, 2, 3, 4, 5};
auto it = lower_bound(v.begin(), v.end(), 3);
cout << *it << endl; // 输出3
return 0;
}
```
在这个例子中,lower_bound函数返回一个迭代器,指向序列中第一个大于或等于3的元素位置,即3。
相关问题
介绍一下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);
```
c++ lower_bound高级用法
引用中展示了lower_bound的高级用法。lower_bound函数用于在有序序列中找到第一个大于或等于给定值的元素的位置。在上述代码中,通过自定义的mycomp2函数对象作为比较规则,我们可以将lower_bound函数用于更复杂的场景。
在代码中,首先定义了mycomp2函数对象,其重载了()运算符,在这个函数对象中输出了传入的两个参数i和j,用于展示lower_bound函数的比较过程。然后,通过调用lower_bound函数,并传入myvector.begin()和myvector.end()作为迭代器范围,3作为要查找的值,以及mycomp2()作为比较规则,即可实现根据mycomp2规则找到第一个违背规则的元素的位置。
整个过程中,lower_bound函数会根据自定义的比较规则来进行查找,并返回一个指向找到的元素的迭代器。如果找不到符合条件的元素,则返回的迭代器指向大于所有元素的位置。
因此,c++的lower_bound函数提供了灵活的高级用法,可以根据自定义的比较规则来进行查找操作。<span class="em">1</span><span class="em">2</span><span class="em">3</span>
#### 引用[.reference_title]
- *1* *2* *3* [C++ lower_bound() upper_bound() 函数用法详解(深入了解,一文学会)](https://blog.csdn.net/qq_37529913/article/details/125139815)[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^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 100%"]
[ .reference_list ]
阅读全文