Namespaces
Variants

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

From cppreference.net

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

#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)