📅  最后修改于: 2023-12-03 14:39:57.905000             🧑  作者: Mango
upper_bound
是 C++ 标准库中定义在 <algorithm>
头文件中的一个函数。它用于在有序容器(如 std::vector
或 std::set
)中寻找第一个不小于给定值的元素。
upper_bound
的语法如下所示:
template <class ForwardIterator, class T>
ForwardIterator upper_bound (ForwardIterator first, ForwardIterator last, const T& value);
其中,first
和 last
表示要搜索的元素的范围,value
是要查找的值。函数返回第一个大于 value
的元素的迭代器。如果没有大于 value
的元素,则返回 last
,即末尾迭代器。
假设我们要在一个有序的 std::vector<int>
中查找第一个大于等于 5 的元素,可以这样写:
#include <iostream>
#include <vector>
#include <algorithm>
int main() {
std::vector<int> v = {1, 3, 4, 5, 7, 8, 9};
auto it = std::upper_bound(v.begin(), v.end(), 5);
if (it != v.end()) {
std::cout << "The first element greater than 5 is " << *it << std::endl;
} else {
std::cout << "No elements greater than 5\n";
}
return 0;
}
运行结果为:
The first element greater than 5 is 7
upper_bound
只能用于有序容器,否则结果是未定义的。const_iterator
;对于容器中的可读写元素,使用 iterator
。upper_bound
使用的是二分查找算法,所以只要容器中的元素是可比较的(比如 int
、double
或字符串类型),都可以进行查找操作。