std::unordered_multiset<Key,Hash,KeyEqual,Allocator>:: equal_range
From fr.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
.
ContenuParamètres
Valeur de retourstd::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
ExempleEstime 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{"fr.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: fr.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
|