📅  最后修改于: 2023-12-03 15:13:56.591000             🧑  作者: Mango
在C++ STL中,multiset是一种基于平衡二叉树实现的数据结构。它类似于set,但可以包含重复元素。
multiset::upper_bound()是multiset中的一个成员函数,它可以用来查找第一个大于给定元素的元素的迭代器。
multiset::iterator upper_bound(const key_type& 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';