📜  在C++ STL中设置upper_bound()函数(1)

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

在C++ STL中设置upper_bound()函数

upper_bound()是STL中的一个函数,它用于在有序容器中查找第一个大于给定值的元素。

函数原型

函数原型如下:

template<class ForwardIt, class T>
ForwardIt upper_bound(ForwardIt first, ForwardIt last, const T& value);
参数说明
  • first:要搜索的范围的开头
  • last:要搜索的范围的结尾
  • value:要查询的值
返回值

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

操作步骤

以下是在C++中使用upper_bound()的基本步骤:

  1. 确保容器是有序的,例如,使用sort()函数对容器进行排序。
std::vector<int> vec = { 1, 3, 5, 7, 9, 11 };
std::sort(vec.begin(), vec.end());
  1. 使用upper_bound()函数查找第一个大于给定值的元素。
auto result = std::upper_bound(vec.begin(), vec.end(), 6);
  1. 如果找到了大于给定值的元素,则返回该元素的迭代器。
if (result != vec.end()) {
    std::cout << "The first element greater than 6 is: " << *result << std::endl;
}
示例代码

下面是一个完整的示例代码,使用upper_bound()函数查找第一个大于给定值的元素。

#include <iostream>
#include <vector>
#include <algorithm>

int main() {
    std::vector<int> vec = { 1, 3, 5, 7, 9, 11 };

    // 使用sort对容器进行排序
    std::sort(vec.begin(), vec.end());

    // 使用upper_bound查找第一个大于6的元素
    auto result = std::upper_bound(vec.begin(), vec.end(), 6);

    // 如果找到了大于6的元素,则输出该元素
    if (result != vec.end()) {
        std::cout << "The first element greater than 6 is: " << *result << std::endl;
    }

    return 0;
}

输出结果:

The first element greater than 6 is: 7
总结

upper_bound()函数在STL中是一个非常有用的函数,它可以方便地在有序容器中查找第一个大于给定值的元素。在使用该函数时,需要注意容器必须是有序的,并且必须使用sort()函数对容器进行排序。