std::unordered_map<Key,T,Hash,KeyEqual,Allocator>:: equal_range
From cppreference.net
<
cpp
|
container
|
unordered map
|
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 un intervalle 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 après-la-fin (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
Exécuter ce code
#include <iostream> #include <unordered_map> int main() { std::unordered_map<int,char> map = {{1, 'a'},{2, 'b'}}; auto range = map.equal_range(1); for (auto it = range.first; it != range.second; ++it) std::cout << it->first << ' ' << it->second << '\n'; }
Sortie :
1 a
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
(fonction template) |