c++中lower_bound用法
时间: 2023-11-19 16:53:26 浏览: 39
在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++中,`lower_bound`和`upper_bound是两个用于查找有序容器中元素位置的函数。
1. `lower_bound`函数用于查第一个大于或等于给定值的元素的位置。它接受两个参数:容器的起始迭代器和要查找的值。返回值是一个迭代器,指向第一个大于或等于给定值的元素位置。如果容器中不存在大于或等于给定值的元素,则返回指向容器末尾的迭代器。
2. `upper_bound`函数用于查找第一个大于给定值的元素的位置。它接受两个参数:容器的起始迭代器和要查找的值。返回值是一个迭代器,指向第一个大于给定值的元素位置。如果容器中不存在大于给定值的元素,则返回指向容器末尾的迭代器。
这两个函数通常用于有序容器(如vector、set、map)中进行二分查找。它们的时间复杂度为O(log n),其中n是容器中元素的个数。
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 ]