equal_range
时间: 2023-07-25 22:03:50 浏览: 78
`equal_range()` 是 C++ STL 的一个函数,用于在有序容器中查找某个元素值的范围。它返回一个 `pair` 对象,包含了两个迭代器,分别指向第一个等于该元素值的元素和最后一个等于该元素值的元素的后一个位置。如果容器中不存在该元素,则两个迭代器指向同一个位置,都是插入该元素时应该插入的位置。`equal_range()` 适用于二分查找算法。
相关问题
std::equal_range
`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)。
lowe_bound equal_range用法
在C++的multimap容器中,可以使用lower_bound、upper_bound和equal_range函数来进行操作。
lower_bound函数用于返回一个指向multimap中第一个不小于给定键值的迭代器。如果给定键值在multimap中不存在,lower_bound将返回指向大于给定键值的第一个元素的迭代器。
upper_bound函数用于返回一个指向multimap中第一个大于给定键值的迭代器。如果给定键值在multimap中不存在,upper_bound将返回指向大于给定键值的第一个元素的迭代器。
equal_range函数用于返回一个pair对象,其中包含了一个指向multimap中第一个等于给定键值的迭代器和一个指向multimap中第一个大于给定键值的迭代器。如果给定键值在multimap中不存在,equal_range将返回一个pair对象,其中两个迭代器都指向大于给定键值的第一个元素的位置。
你可以使用这些函数来查找指定键值在multimap中的位置,并进行相应的操作。
相关推荐
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![doc](https://img-home.csdnimg.cn/images/20210720083327.png)
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)