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