Namensräume
Varianten
Aktionen

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

Von cppreference.com
 
 
 
 
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 und der zweite hinter das letzte Element des Bereichs zeigt.
3,4) Gibt einen Bereich zurück, der alle Elemente im Container mit einem zum Schlüssel x äquivalenten Schlüssel enthält. Diese Überladung nimmt nur an der Überladungsauflösung teil, wenn Hash::is_transparent und KeyEqual::is_transparent gültig sind und jeweils einen Typ bezeichnen. Dies setzt voraus, dass ein solches Hash sowohl mit dem Typ K als auch mit dem Typ Key aufrufbar ist und dass KeyEqual transparent ist, was zusammen ermöglicht, diese Funktion aufzurufen, ohne eine Instanz von Key zu konstruieren.

Inhalt

[bearbeiten] Parameter

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

[bearbeiten] Rückgabewert

std::pair, das ein Paar Iteratoren enthält, das den gesuchten Bereich definiert. Wenn keine solchen Elemente vorhanden sind, werden Past-the-end-Iteratoren (siehe end()) als beide Elemente des Paares zurückgegeben.

[bearbeiten] Komplexität

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

[bearbeiten] Anmerkungen

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

[bearbeiten] 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

[bearbeiten] Siehe auch

sucht ein Element mit einem bestimmten Schlüssel
(public member function) [edit]
(C++20)
prüft, ob der Container ein Element mit einem bestimmten Schlüssel enthält
(public member function) [edit]
gibt die Anzahl der Elemente zurück, die einem bestimmten Schlüssel entsprechen
(public member function) [edit]
gibt den Bereich von Elementen zurück, die einem bestimmten Schlüssel entsprechen
(Funktionstemplate) [edit]