lower_bound
时间: 2023-10-14 15:59:33 浏览: 38
`lower_bound` 是一个在有序序列中查找给定值的函数,它返回序列中第一个不小于给定值的元素的迭代器。如果序列中不存在不小于给定值的元素,它将返回序列的结尾迭代器。`lower_bound` 通常与 `upper_bound` 函数一起使用,可以用来查找序列中某个值的范围。这是C++ STL中的一个常用函数。
相关问题
upper_bound 和 lower_bound
upper_bound和lower_bound是C++标准库中的两个函数,用于在有序的容器(例如数组或vector)中查找指定的元素。
upper_bound函数返回的是容器中第一个大于指定元素的位置,而lower_bound函数返回的是容器中第一个大于等于指定元素的位置。
这两个函数接收三个迭代器参数,分别是容器的起始位置、结束位置和要查找的元素。它们都使用了二分查找算法来实现,因此在有序容器中的查找速度非常快。
下面是它们的用法示例:
int arr[] = {1, 2, 2, 3, 4, 4, 5};
vector<int> vec(arr, arr + 7);
sort(vec.begin(), vec.end());
auto it1 = upper_bound(vec.begin(), vec.end(), 3); // 返回指向元素4的迭代器
auto it2 = lower_bound(vec.begin(), vec.end(), 4); // 返回指向元素4的迭代器
cout << "upper_bound: " << *it1 << endl;
cout << "lower_bound: " << *it2 << endl;
输出结果为:
upper_bound: 4
lower_bound: 4
lower_bound 和 upper_bound
lower_bound 和 upper_bound 是 C++ STL 中的两个函数,都用于在有序序列中查找某个元素的位置。
lower_bound 函数的作用是在有序序列中查找第一个大于等于给定值的元素的位置,如果所有元素都小于给定值,则返回序列的长度。
upper_bound 函数的作用是在有序序列中查找第一个大于给定值的元素的位置,如果所有元素都小于等于给定值,则返回序列的长度。
这两个函数都需要传入两个迭代器和一个要查找的值,返回一个迭代器指向查找到的位置。
举个例子,假设有一个有序数组 arr,我们要查找第一个大于等于 5 的元素的位置,可以这样写:
auto it = lower_bound(arr.begin(), arr.end(), 5);
如果要查找第一个大于 5 的元素的位置,可以这样写:
auto it = upper_bound(arr.begin(), arr.end(), 5);
阅读全文