lower_bound
时间: 2023-06-23 13:44:24 浏览: 34
二分查找及其变种,c++ upper_bound,c++ lower_bound(csdn)————程序.pdf
5星 · 资源好评率100%
lower_bound是C++ STL中的一个模版函数,用于在有序的序列中查找第一个大于等于给定值的元素的位置。lower_bound函数有两个参数,第一个参数表示要查找的序列的起始位置,第二个参数表示要查找的序列的结束位置,第三个参数表示要查找的值。
下面是一个使用lower_bound函数的简单例子:
```c++
#include <iostream>
#include <algorithm>
#include <vector>
using namespace std;
int main() {
vector<int> v{1, 2, 3, 3, 5, 6, 7, 8, 9};
int x = 3;
auto it = lower_bound(v.begin(), v.end(), x);
if (it != v.end() && *it == x) {
cout << "Element found at position: " << it - v.begin() << endl;
} else {
cout << "Element not found!" << endl;
}
return 0;
}
```
这段代码创建了一个vector v,里面存储了1到9的整数,然后定义了一个整数x,用于查找第一个大于等于x的元素的位置。接着使用lower_bound函数在v中查找第一个大于等于x的元素,并将结果赋值给一个迭代器it。最后,根据迭代器it是否等于v.end(),以及迭代器指向的元素是否等于x,输出对应的结果。
需要注意的是,如果序列中有多个等于x的元素,lower_bound函数可能返回它们中的任意一个。如果要查找最后一个等于x的元素,可以使用upper_bound函数,并将结果减一。如果要同时查找第一个和最后一个等于x的元素,可以使用equal_range函数,它返回一个pair对象,pair.first表示第一个等于x的元素的位置,pair.second表示最后一个等于x的元素的位置的后一个位置。
阅读全文