📅  最后修改于: 2023-12-03 14:51:14.968000             🧑  作者: Mango
在 C++ 标准模板库(STL)中,equal_range() 函数可用于在有序范围内查找特定值的连续区间。该函数返回一个 pair,其中第一个元素是指向第一个大于等于给定值的迭代器,第二个元素是指向第一个大于给定值的迭代器。如果值在范围内不存在,则两个迭代器均指向第一个大于给定值的位置。
template <class ForwardIterator, class T>
pair<ForwardIterator, ForwardIterator> equal_range (ForwardIterator first, ForwardIterator last, const T& val);
该函数返回一个 pair,其中第一个元素是指向第一个大于等于给定值的迭代器,第二个元素是指向第一个大于给定值的迭代器。
#include <iostream>
#include <algorithm>
#include <vector>
int main() {
std::vector<int> nums = {1, 2, 2, 3, 3, 3, 4, 5};
// 在有序的 nums 中查找连续的元素 3 的区间
auto range = std::equal_range(nums.begin(), nums.end(), 3);
// 输出连续区间的值
for (auto it = range.first; it != range.second; ++it) {
std::cout << *it << " ";
}
return 0;
}
输出:
3 3 3
在以上示例中,我们创建了一个有序的整数向量 nums,并使用 equal_range() 函数查找值为 3 的连续区间。输出结果为 3 3 3,表示在有序向量中连续出现了三次值为 3 的元素。