Namespaces
Variants

std::unordered_multimap<Key,T,Hash,KeyEqual,Allocator>:: equal_range

From cppreference.net

std:: pair < iterator, iterator > equal_range ( const Key & key ) ;
(1) (seit C++11)
std:: pair < const_iterator, const_iterator > equal_range ( const Key & key ) const ;
(2) (seit C++11)
template < class K >
std:: pair < iterator, iterator > equal_range ( const K & x ) ;
(3) (seit C++20)
template < class K >
std:: pair < const_iterator, const_iterator > equal_range ( const K & x ) const ;
(4) (seit C++20)
1,2) Gibt einen Bereich zurück, der alle Elemente mit dem Schlüssel key im Container enthält. Der Bereich wird durch zwei Iteratoren definiert, wobei der erste auf das erste Element des gewünschten Bereichs zeigt und der zweite hinter das letzte Element des Bereichs zeigt.
3,4) Gibt einen Bereich zurück, der alle Elemente im Container mit einem Schlüssel äquivalent zu x enthält. Diese Überladung nimmt nur an der Überladungsauflösung teil, wenn Hash und KeyEqual beide transparent sind. Dies setzt voraus, dass ein solcher Hash sowohl mit dem Typ K als auch mit dem Typ Key aufrufbar ist und dass KeyEqual transparent ist, was zusammen den Aufruf dieser Funktion ermöglicht, ohne eine Instanz von Key zu konstruieren.

Inhaltsverzeichnis

Parameter

key - Schlüsselwert, mit dem die Elemente verglichen werden
x - ein Wert beliebigen Typs, der transparent mit einem Schlüssel verglichen werden kann

Rückgabewert

std::pair enthält ein Paar von Iteratoren, die den gewünschten Bereich definieren. Falls keine solchen Elemente vorhanden sind, werden End-Iteratoren (siehe end() ) als beide Elemente des Paares zurückgegeben.

Komplexität

Durchschnittlicher Fall linear in der Anzahl der Elemente mit dem Schlüssel key , schlechtester Fall linear in der Größe des Containers.

Hinweise

Feature-Test Makro Wert Std Funktion
__cpp_lib_generic_unordered_lookup 201811L (C++20) Heterogener Vergleichslookup in ungeordneten assoziativen Containern , Überladungen (3,4)

Beispiel

#include <iostream>
#include <unordered_map>
int main()
{
    std::unordered_multimap<int,char> map = {{1, 'a'},{1, 'b'},{1, 'd'},{2, 'b'}};
    auto range = map.equal_range(1);
    for (auto it = range.first; it != range.second; ++it)
        std::cout << it->first << ' ' << it->second << '\n';
}

Ausgabe:

1 a
1 b
1 d

Siehe auch

findet Element mit spezifischem Schlüssel
(öffentliche Elementfunktion)
(C++20)
prüft ob der Container ein Element mit spezifischem Schlüssel enthält
(öffentliche Elementfunktion)
gibt die Anzahl der Elemente zurück, die einem spezifischen Schlüssel entsprechen
(öffentliche Elementfunktion)
gibt den Bereich der Elemente zurück, die einem spezifischen Schlüssel entsprechen
(Funktions-Template)