upper_bound和lower_bound
时间: 2023-11-06 11:57:16 浏览: 257
upper_bound和lower_bound是C++标准库中的两个函数,用于在有序容器(如数组、向量、列表等)中进行二分查找。upper_bound返回的是大于指定值的第一个元素的迭代器,而lower_bound返回的是大于等于指定值的第一个元素的迭代器。
它们的用法如下:
- upper_bound(begin, end, value):在指定范围内查找大于value的第一个元素的位置。
- lower_bound(begin, end, value):在指定范围内查找大于等于value的第一个元素的位置。
这两个函数都需要传入一个指定范围的起始迭代器和结束迭代器,以及一个要查找的值。它们返回的是一个迭代器,指向容器中符合条件的元素。
相关问题
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
c++ upper_bound和lower_bound
在C++标准库中,`upper_bound` 和 `lower_bound` 是 `<algorithm>` 模块提供的两个算法,它们用于对容器(如数组、向量、列表等)内的元素进行查找。
1. **lower_bound**: 这个函数返回的是一个迭代器,它指向第一个大于或等于给定值的第一个元素的位置。如果容器内所有元素都小于给定值,那么返回的迭代器将指向容器的结束迭代器。
```cpp
iterator lower_bound(container_type& container, const T& value);
```
2. **upper_bound**: 类似于 `lower_bound`,但是查找的是第一个大于给定值的元素位置。这意味着,如果找到给定值,则返回该值的下一个位置。
```cpp
iterator upper_bound(container_type& container, const T& value);
```
使用这两个函数时,通常需要传入一个已排序的容器,因为它们依赖于比较操作符 (`<`) 来确定元素的顺序。例如:
```cpp
auto lower = std::lower_bound(vec.begin(), vec.end(), target_value);
if (lower != vec.end() && *lower == target_value) {
// target_value存在并且是最小的
}
auto upper = std::upper_bound(vec.begin(), vec.end(), target_value);
```
阅读全文
相关推荐














