📅  最后修改于: 2023-12-03 15:29:50.602000             🧑  作者: Mango
C++中STL(Standard Template Library)的Set容器是一种红黑树实现的集合,可以用于快速查找元素。
Set容器的成员函数包括:insert, erase, find等,而其中一个很有用的函数是upper_bound()。下面我们来介绍一下upper_bound()函数的使用。
upper_bound()函数的作用是在Set容器中查找大于某个元素的第一个位置,并返回该位置的迭代器。也就是说,该函数返回的迭代器指向的元素大于指定元素,但不一定是第一个大于该元素的位置。
upper_bound()函数的定义如下:
set<int>::iterator upper_bound(const int& val) const;
其中,set
下面是一个使用upper_bound()函数的示例:
#include <iostream>
#include <set>
using namespace std;
int main() {
int arr[] = {1, 2, 4, 5, 7, 9, 12};
set<int> myset(arr, arr + sizeof(arr) / sizeof(int));
set<int>::iterator it = myset.upper_bound(5);
if (it == myset.end()) {
cout << "5 is larger than the largest element of the set" << endl;
}
else {
cout << "The first element in the set larger than 5 is " << *it << endl;
}
return 0;
}
上述代码定义了一个Set容器myset,其中包含了arr数组中的元素,然后使用upper_bound()函数查找在Set容器中大于5的第一个位置,最终输出找到的元素。如果Set容器中没有比5大的元素,则输出“5 is larger than the largest element of the set”这句话。
在上述代码中,upper_bound()函数的返回值是一个迭代器,我们将其赋值给it变量。然后通过判断it是否等于myset.end()来确定是否找到了符合条件的元素。如果it等于myset.end(),则说明没有找到符合条件的元素,因为Set容器中所有元素都小于等于5;否则,*it即为符合条件的元素。
Set容器可以用于快速查找元素,而upper_bound()函数可以用于查找Set容器中大于某个元素的第一个位置。上述示例代码展示了使用upper_bound()函数的方法,可以通过运行该代码来学习和尝试upper_bound()函数的使用。