std::unordered_multimap<Key,T,Hash,KeyEqual,Allocator>::equal_range
Von cppreference.com
< cpp | container | unordered multimap
| 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
Führen Sie diesen Code aus
#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) | |
| (C++20) |
prüft, ob der Container ein Element mit einem bestimmten Schlüssel enthält (public member function) |
| gibt die Anzahl der Elemente zurück, die einem bestimmten Schlüssel entsprechen (public member function) | |
| gibt den Bereich von Elementen zurück, die einem bestimmten Schlüssel entsprechen (Funktionstemplate) |