📜  在C++ STL中设置equal_range()函数(1)

📅  最后修改于: 2023-12-03 14:51:14.968000             🧑  作者: Mango

在C++ STL中设置equal_range()函数

介绍

在 C++ 标准模板库(STL)中,equal_range() 函数可用于在有序范围内查找特定值的连续区间。该函数返回一个 pair,其中第一个元素是指向第一个大于等于给定值的迭代器,第二个元素是指向第一个大于给定值的迭代器。如果值在范围内不存在,则两个迭代器均指向第一个大于给定值的位置。

语法
template <class ForwardIterator, class T>
pair<ForwardIterator, ForwardIterator> equal_range (ForwardIterator first, ForwardIterator last, const T& val);
参数
  • first:指向要搜索的范围的第一个元素的迭代器。
  • last:指向要搜索的范围的最后一个元素之后的迭代器。
  • 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 的元素。