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) | (depuis C++11) |
|
std::
pair
<
const_iterator, const_iterator
>
equal_range
(
const
Key
&
key
)
const
;
|
(2) | (depuis C++11) |
|
template
<
class
K
>
std:: pair < iterator, iterator > equal_range ( const K & x ) ; |
(3) | (depuis C++20) |
|
template
<
class
K
>
std:: pair < const_iterator, const_iterator > equal_range ( const K & x ) const ; |
(4) | (depuis C++20) |
1,2)
Retourne une plage contenant tous les éléments avec la clé
key
dans le conteneur. La plage est définie par deux itérateurs, le premier pointant vers le premier élément de la plage souhaitée et le second pointant après le dernier élément de la plage.
3,4)
Retourne une plage contenant tous les éléments du conteneur dont la clé est équivalente à
x
. Cette surcharge participe à la résolution de surcharge uniquement si
Hash
et
KeyEqual
sont tous deux
transparents
. Cela suppose qu'un tel
Hash
peut être appelé avec les types
K
et
Key
, et que le
KeyEqual
est transparent, ce qui, ensemble, permet d'appeler cette fonction sans construire une instance de
Key
.
Table des matières |
Paramètres
| key | - | valeur clé à comparer aux éléments |
| x | - | une valeur de tout type pouvant être comparée de manière transparente avec une clé |
Valeur de retour
std::pair contenant une paire d'itérateurs définissant la plage souhaitée. S'il n'y a pas de tels éléments, des itérateurs past-the-end (voir end() ) sont renvoyés comme les deux éléments de la paire.
Complexité
Cas moyen linéaire dans le nombre d'éléments avec la clé key , cas pire linéaire dans la taille du conteneur.
Notes
| Macro de test de fonctionnalité | Valeur | Std | Fonctionnalité |
|---|---|---|---|
__cpp_lib_generic_unordered_lookup
|
201811L
|
(C++20) | Recherche de comparaison hétérogène dans les conteneurs associatifs non ordonnés , surcharges (3,4) |
Exemple
Estime la fréquence des caractères pour la chaîne donnée.
Exécuter ce code
#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; } }
Sortie possible :
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
Voir aussi
|
trouve l'élément avec une clé spécifique
(fonction membre publique) |
|
|
(C++20)
|
vérifie si le conteneur contient un élément avec une clé spécifique
(fonction membre publique) |
|
retourne le nombre d'éléments correspondant à une clé spécifique
(fonction membre publique) |
|
|
retourne la plage d'éléments correspondant à une clé spécifique
(modèle de fonction) |