std::unordered_multiset<Key,Hash,KeyEqual,Allocator>:: equal_range
From cppreference.net
<
cpp
|
container
|
unordered multiset
|
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 dann 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
aufgerufen werden kann und dass der
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
Schätzt die Zeichenhäufigkeit für die gegebene Zeichenkette.
Diesen Code ausführen
#include <iostream> #include <iterator> #include <string> #include <unordered_set> int main() { std::string sentence{"cppreference.net"}; std::cout << "The sentence: " << sentence << '\n'; std::unordered_multiset<char> sequence; for (char x : sentence) sequence.insert(x); std::cout << "The sequence: { "; for (char x : sequence) std::cout << x << ' '; std::cout << "}\n" "Symbol:Frequency: "; for (auto it = sequence.begin(); it != sequence.end();) { if (auto [first, last] = sequence.equal_range(*it); first != last) { std::cout << *first << ":" << std::distance(first, last) << " "; it = last; } else ++it; } }
Mögliche Ausgabe:
The sentence: cppreference.net
The sequence: { m o c c c p p r r e e e e f n . }
Symbol:Frequency: m:1 o:1 c:3 p:2 r:2 e:4 f:1 n:1 .:1
Siehe auch
|
findet Element mit spezifischem Schlüssel
(öffentliche Elementfunktion) |
|
|
(C++20)
|
prüft ob der Container Element mit spezifischem Schlüssel enthält
(öffentliche Elementfunktion) |
|
gibt die Anzahl der Elemente zurück, die mit spezifischem Schlüssel übereinstimmen
(öffentliche Elementfunktion) |
|
|
gibt den Bereich der Elemente zurück, die mit einem spezifischen Schlüssel übereinstimmen
(Funktions-Template) |