📜  C++ STL中的multiset upper_bound()与示例(1)

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

C++ STL中的multiset::upper_bound()

在C++ STL中,multiset是一种基于平衡二叉树实现的数据结构。它类似于set,但可以包含重复元素。

multiset::upper_bound()是multiset中的一个成员函数,它可以用来查找第一个大于给定元素的元素的迭代器。

函数声明

multiset::iterator upper_bound(const key_type& key);

参数说明
  1. key:要查找的元素的键值
返回值

一个迭代器,指向multiset中第一个大于给定元素的元素,如果不存在这样的元素,则返回multiset.end()。

示例

下面是一个使用multiset::upper_bound()查找元素的示例代码:

#include <iostream>
#include <set>

int main()
{
    std::multiset<int> myset = {10, 20, 30, 30, 40, 50};

    std::cout << "The multiset contains:";
    for (auto it = myset.begin(); it != myset.end(); ++it)
    {
        std::cout << ' ' << *it;
    }
    std::cout << '\n';

    auto it = myset.upper_bound(30);
    std::cout << "The upper bound of 30 is " << *it << '\n';

    return 0;
}

该程序创建一个包含一些整数的multiset,并使用multiset::upper_bound()查找第一个大于30的元素。运行结果如下:

The multiset contains: 10 20 30 30 40 50
The upper bound of 30 is 40

在上述示例代码中,multiset::upper_bound()返回的迭代器指向元素40,因为40是multiset中第一个大于30的元素。如果查询的元素为multiset中的最大元素,则upper_bound()将返回multiset.end()。

总结

multiset::upper_bound()是STL中非常有用的一个函数,它可以用来查找multiset中第一个大于给定元素的元素。需要注意的是,multiset可以包含重复元素,因此在使用upper_bound()时可能需要特殊处理。

代码片段

std::multiset<int> myset = {10, 20, 30, 30, 40, 50};

std::cout << "The multiset contains:";
for (auto it = myset.begin(); it != myset.end(); ++it)
{
    std::cout << ' ' << *it;
}
std::cout << '\n';

auto it = myset.upper_bound(30);
std::cout << "The upper bound of 30 is " << *it << '\n';