Пространства имён
Варианты
Действия

equal_range

Материал из cppreference.com

Синтаксис:

    #include <algorithm>
    pair<forward_iterator,forward_iterator> equal_range( forward_iterator first, forward_iterator last, const T& val );
    pair<forward_iterator,forward_iterator> equal_range( forward_iterator first, forward_iterator last, const T& val, CompFn comp );

Функция equal_range() возвращает диапазон элементов между first и last, равных val. Эта функция предполагает, что элементы между first и last расположены в порядке, определенном функцией comp, если она определена, либо оператором < в ином случае.

equal_range() можно представить как комбинацию lower_bound и upper_bound, так как первый из пары итераторов, которые возвращает эта функция аналогичен тому, что возвращает lower_bound, а второй аналогичен тому, что возвращает upper_bound.

Например, следующий код использует equal_range(), чтобы определить все возможные места в упорядоченном векторе, куда можно вставить 8, сохраняя упорядоченность:

   vector<int> nums;
   nums.push_back( -242 );
   nums.push_back( -1 );
   nums.push_back( 0 );
   nums.push_back( 5 );
   nums.push_back( 8 );
   nums.push_back( 8 );
   nums.push_back( 11 );
 
   pair<vector<int>::iterator, vector<int>::iterator> result;
   int new_val = 8;
 
   result = equal_range( nums.begin(), nums.end(), new_val );
 
   cout << "The first place that " << new_val << " could be inserted is before "
        << *result.first << ", and the last place that it could be inserted is before "
        << *result.second << endl;

Этот код выводит:

   The first place that 8 could be inserted is before 8,
   and the last place that it could be inserted is before 11

Смотрите также: binary_search, lower_bound, upper_bound