Namespaces
Variants

std::multimap<Key,T,Compare,Allocator>:: equal_range

From cppreference.net

std:: pair < iterator, iterator > equal_range ( const Key & key ) ;
(1) (constexpr начиная с C++26)
std:: pair < const_iterator, const_iterator >
equal_range ( const Key & key ) const ;
(2) (constexpr начиная с C++26)
template < class K >
std:: pair < iterator, iterator > equal_range ( const K & x ) ;
(3) (начиная с C++14)
(constexpr начиная с C++26)
template < class K >

std:: pair < const_iterator, const_iterator >

equal_range ( const K & x ) const ;
(4) (начиная с C++14)
(constexpr начиная с C++26)

Возвращает диапазон, содержащий все элементы с заданным ключом в контейнере. Диапазон определяется двумя итераторами: один указывает на первый элемент, который не меньше заданного ключа, а другой указывает на первый элемент, больший заданного ключа.

В качестве альтернативы, первый итератор может быть получен с помощью lower_bound() , а второй с помощью upper_bound() .

1,2) Сравнивает ключи с key .
3,4) Сравнивает ключи со значением x .
Эта перегрузка участвует в разрешении перегрузки только если Compare является прозрачным . Это позволяет вызывать данную функцию без создания экземпляра Key .

Содержание

Параметры

key - значение ключа для сравнения с элементами
x - альтернативное значение, которое можно сравнить с Key

Возвращаемое значение

std::pair содержащий пару итераторов, определяющих требуемый диапазон:

  • Первый итератор указывает на первый элемент, не меньший заданного ключа, или на end ( ) если такой элемент не существует.
  • Второй итератор указывает на первый элемент, больший заданного ключа, или на end ( ) если такой элемент не существует.

Поскольку emplace и неуказанная вставка insert всегда вставляют в верхнюю границу, порядок эквивалентных элементов в диапазоне равен порядку вставки, если только не использовалась указанная вставка insert или emplace_hint для вставки элемента в другую позицию.

(начиная с C++11)

Сложность

Логарифмическая от размера контейнера.

Примечания

Feature-test макрос Значение Стандарт Функциональность
__cpp_lib_generic_associative_lookup 201304L (C++14) Гетерогенный поиск сравнения в ассоциативных контейнерах , для перегрузок ( 3,4 )

Пример

#include <iostream>
#include <map>
int main()
{
    std::multimap<int, char> dict
    {
        {1, 'A'},
        {2, 'B'},
        {2, 'C'},
        {2, 'D'},
        {4, 'E'},
        {3, 'F'}
    };
    auto range = dict.equal_range(2);
    for (auto i = range.first; i != range.second; ++i)
        std::cout << i->first << ": " << i->second << '\n';
}

Вывод:

2: B
2: C
2: D

Смотрите также

находит элемент с указанным ключом
(public member function)
(C++20)
проверяет, содержит ли контейнер элемент с указанным ключом
(public member function)
возвращает количество элементов, соответствующих указанному ключу
(public member function)
возвращает итератор на первый элемент больший чем заданный ключ
(public member function)
возвращает итератор на первый элемент не меньший чем заданный ключ
(public member function)
возвращает диапазон элементов, соответствующих указанному ключу
(function template)