lower_bound和upper_bound的用法
时间: 2024-12-20 22:14:40 浏览: 8
lower_bound和upper_bound是STL(Standard Template Library)中的两个算法,它们用于容器(如vector、set等)中的元素查找。这两个函数主要用于定位插入某个特定值的第一个合适位置或者找到大于等于(lower_bound)或小于等于(upper_bound)该值的最大元素位置。
1. lower_bound(container.begin(), container.end(), value): 这个函数返回一个迭代器,它指向容器中第一个大于等于给定`value`的元素的位置。如果container里所有元素都小于value,那么返回的是container的end()。
2. upper_bound(container.begin(), container.end(), value): 类似地,这个函数返回一个迭代器,它指向容器中第一个大于给定`value`的元素的位置。如果container里所有元素都小于或等于value,那么返回的是container的end()。
例如,在C++中:
```cpp
std::vector<int> vec = {1, 3, 5, 7, 9};
auto lower_pos = std::lower_bound(vec.begin(), vec.end(), 6); // lower_pos现在指向5
auto upper_pos = std::upper_bound(vec.begin(), vec.end(), 4); // upper_pos现在指向5,因为下一个大于4的数是5
```
阅读全文