C++ STL中的multiset::upper_bound()及其示例

C++ STL中的multiset::upper_bound()及其示例

C++ STL中,multiset是一个很有用的容器。它可以存储相同元素并保持排序。如果你需要找到某个元素出现的位置或插入一个元素,multiset::upper_bound()方法可能是你需要的方法。

multiset::upper_bound()

multiset::upper_bound()方法返回一个指向第一个大于指定值的元素的迭代器。如果没有符合条件的元素,则返回multiset.end()。这里所说的“大于”指的是按照multiset内部元素排序的方式。

下面是multiset::upper_bound()方法的定义:

iterator upper_bound (const value_type& val) const;

其中,val是需要找到的值。

示例

下面我们给出一些multiset::upper_bound()的示例代码。

示例1:找到multiset中第一个大于指定值的元素

#include <iostream>
#include <set>

int main()
{
    std::multiset<int> ms = { 3, 4, 5, 5, 5, 7, 7, 8 };
    int val = 6;
    auto it = ms.upper_bound(val);
    if (it != ms.end()) {
        std::cout << "The first element greater than " << val << " is " << *it << std::endl;
    }
    else {
        std::cout << "No element greater than " << val << " found." << std::endl;
    }
    return 0;
}

输出:

The first element greater than 6 is 7

示例2:使用自定义比较器

#include <iostream>
#include <set>

struct MyCmp {
    bool operator() (int a, int b) const {
        return a % 10 < b % 10;
    }
};

int main()
{
    std::multiset<int, MyCmp> ms = { 23, 15, 37, 39, 49, 61, 82, 95 };
    int val = 30;
    auto it = ms.upper_bound(val);
    if (it != ms.end()) {
        std::cout << "The first element greater than " << val << " is " << *it << std::endl;
    }
    else {
        std::cout << "No element greater than " << val << " found." << std::endl;
    }
    return 0;
}

输出:

The first element greater than 30 is 61

结论

multiset::upper_bound()方法是一个非常有用和灵活的方法,可以帮助我们在multiset容器中查找元素或插入元素。我们只需按照正确的方式使用它就可以了。

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程

C++ 教程