请给我一段upper_bound的样例代码以及详细解说
时间: 2024-03-03 20:50:24 浏览: 71
好的,下面是一个使用upper_bound函数的样例代码:
```c++
#include <iostream>
#include <algorithm>
#include <vector>
using namespace std;
int main() {
vector<int> v{1, 2, 3, 4, 5, 6, 7, 8, 9};
int x = 5;
auto it = upper_bound(v.begin(), v.end(), x);
if (it != v.end()) {
cout << "The first element greater than " << x << " is at position: " << it - v.begin() << endl;
} else {
cout << "No element greater than " << x << " found!" << endl;
}
return 0;
}
```
这段代码创建了一个vector v,里面存储了1到9的整数,然后定义了一个整数x,用于查找第一个大于x的元素的位置。接着使用upper_bound函数在v中查找第一个大于x的元素,并将结果赋值给一个迭代器it。最后,根据迭代器it是否等于v.end(),输出对应的结果。
upper_bound函数的用法和lower_bound函数类似,不同之处在于它返回第一个大于给定值的元素的位置。如果没有找到大于给定值的元素,则返回结束位置的迭代器。
需要注意的是,当查找的元素在序列中不存在时,lower_bound和upper_bound函数的返回值都是指向第一个大于或等于该元素的位置的迭代器。因此,在判断返回值是否等于结束位置的迭代器时,需要使用“!=”运算符而不是“<”。
阅读全文