c++ upper_bound和lower_bound
时间: 2025-01-20 12:11:02 浏览: 55
在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);
```
阅读全文
相关推荐
















