📅  最后修改于: 2023-12-03 15:13:56.098000             🧑  作者: Mango
C++ STL 中的 set 是一种关联式容器,其中的元素按照一定规则自动排序,同时保证元素的唯一性。在 set 中查找元素的过程是十分高效的,而 lower_bound() 函数就是 set 中用于查找元素的函数之一。
lower_bound() 函数用于查找 set 容器中第一个不小于所给条件的元素的位置。它返回一个迭代器,指向 set 容器中第一个不小于给定值的元素。如果容器中没有这个元素,则返回一个指向下一个位置的迭代器。由于 set 中的元素自动排序,所以这个函数一般用于二分查找。
lower_bound() 函数的用法非常简单,只需要在 set 容器上直接调用即可。该函数有两个参数:第一个参数是要查找的值,第二个参数是一个迭代器,指定了查找范围的起始位置。如果没有指定第二个参数,则从头开始查找。
下面是 lower_bound() 函数的基本用法:
set<int> s = {1, 2, 3, 4, 5};
auto it = s.lower_bound(3); // 返回指向 3 的迭代器
如果要查找的值在 set 容器中不存在,lower_bound() 函数会返回一个指向第一个大于该值的元素的迭代器。
set<int> s = {1, 2, 3, 4, 5};
auto it = s.lower_bound(6); // 返回指向 s.end()
下面是一个完整的示例程序,演示了如何使用 lower_bound() 函数查找 set 容器中的元素。
#include <set>
#include <iostream>
using namespace std;
int main() {
set<int> s = {1, 2, 3, 4, 5};
auto it = s.lower_bound(3);
if (it != s.end()) {
cout << "Found: " << *it << endl;
} else {
cout << "Not found" << endl;
}
return 0;
}
执行上面的程序,输出结果为:
Found: 3
lower_bound() 函数是 C++ STL set 容器中十分实用的函数,查找元素时可以调用该函数,从而提升程序效率。使用该函数时要注意,set 容器中的元素必须是可排序的,即支持 < 运算符。此外,lower_bound() 函数返回的是一个迭代器,需要使用解引用操作符 * 来获取所找到的元素。