Namespaces
Variants

std::unordered_multiset<Key,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 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.

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