📌  相关文章
📜  upper_bound - C++ (1)

📅  最后修改于: 2023-12-03 15:05:46.193000             🧑  作者: Mango

upper_bound - C++

在 C++ 中,upper_bound 是一个函数,用于在已排序的集合中找到某个元素的大于(或等于)值的第一个位置。

函数签名
template <class ForwardIterator, class T>
ForwardIterator upper_bound (ForwardIterator first, ForwardIterator last, const T& val);
参数
  • first :迭代器指向要考虑的元素的第一个元素。
  • last:迭代器指向要考虑的元素的最后一个元素后的元素。
  • val:要搜索的值。
返回值

返回的迭代器指向在指定范围内的元素中大于给定值的第一个元素。

示例
#include <iostream>
#include <vector>
#include <algorithm>

int main() {
    std::vector<int> vec = {1, 2, 3, 3, 3, 4, 4, 5, 5, 6};
    int search_val = 3;
    auto upper = std::upper_bound(vec.begin(), vec.end(), search_val);
    if (upper != vec.end()) {
        std::cout << "The first element greater than " << search_val << " is " << *upper << "." << std::endl;
    } else {
        std::cout << "The value " << search_val << " is not greater than any element in the vector." << std::endl;
    }
    return 0;
}

输出:

The first element greater than 3 is 4.
注意事项
  • 必须在有序的集合中使用 upper_bound 函数。
  • 如果没有元素大于或等于给定值,则返回的迭代器将指向容器的 end
  • STL 库中的其他算法也可用于与 upper_bound 类似的任务,如 lower_boundequal_range 等。