std::equal_range
时间: 2023-09-08 07:13:06 浏览: 50
`std::equal_range`是C++ STL中的一个算法函数,用于在已排序的容器中查找某个值的范围。它返回一个pair对象,其中第一个元素是指向第一个等于给定值的元素的迭代器,第二个元素是指向第一个大于给定值的元素的迭代器。如果没有找到给定值,则这两个迭代器均指向第一个大于给定值的元素的位置。
以下是`std::equal_range`函数的函数原型:
```c++
template<class ForwardIt, class T>
std::pair<ForwardIt, ForwardIt> equal_range(ForwardIt first, ForwardIt last, const T& value);
template<class ForwardIt, class T, class Compare>
std::pair<ForwardIt, ForwardIt> equal_range(ForwardIt first, ForwardIt last, const T& value, Compare comp);
```
其中:
- `first`和`last`表示要查找的元素范围,必须是已排序的。
- `value`表示要查找的值。
- `comp`是可选的,表示比较函数,用于比较元素的值,默认为`std::less<T>`。
下面是一个使用`std::equal_range`函数查找vector中某个值范围的例子:
```c++
#include <iostream>
#include <vector>
#include <algorithm>
int main() {
std::vector<int> v = {1, 2, 3, 4, 4, 4, 5, 6};
auto range = std::equal_range(v.begin(), v.end(), 4);
std::cout << "Range of 4: [" << std::distance(v.begin(), range.first) << ", " << std::distance(v.begin(), range.second) << ")" << std::endl;
return 0;
}
```
输出:
```
Range of 4: [3, 6)
```
这表示4在vector中的范围是从下标3到下标6之间的元素(不包括下标6)。