std::unordered_set
est un conteneur associatif qui contient un ensemble d'objets uniques de type
Key
. La recherche, l'insertion et la suppression ont une complexité temporelle moyenne constante.
En interne, les éléments ne sont pas triés dans un ordre particulier, mais organisés en compartiments. Le compartiment dans lequel un élément est placé dépend entièrement du hachage de sa valeur. Cela permet un accès rapide aux éléments individuels, car une fois le hachage calculé, il fait référence au compartiment exact où l'élément est placé.
Les éléments du conteneur ne doivent pas être modifiés (même par des itérateurs non constants) car une modification pourrait changer le hachage d'un élément et corrompre le conteneur.
Toutes les fonctions membres de
std::unordered_set
sont
constexpr
: il est possible de créer et d'utiliser des objets
std::unordered_set
lors de l'évaluation d'une expression constante.
Cependant,
std::unordered_set
ne peut généralement pas être
constexpr
, car toute mémoire allouée dynamiquement doit être libérée lors de la même évaluation d'expression constante.
Les fonctions d'échange n'invalident aucun des itérateurs à l'intérieur du conteneur, mais elles invalident l'itérateur marquant la fin de la région d'échange.
Les références et les pointeurs vers les données stockées dans le conteneur ne sont invalidés que par l'effacement de cet élément, même lorsque l'itérateur correspondant est invalidé.
Après une affectation par déplacement de conteneur, sauf si l'affectation par déplacement élément par élément est forcée par des allocateurs incompatibles, les références, pointeurs et itérateurs (autres que l'itérateur de fin) vers le conteneur déplacé restent valides, mais se réfèrent aux éléments qui se trouvent maintenant dans
*
this
.
Paramètres du modèle
Cette section est incomplète
Motif : Ajouter les descriptions des paramètres du modèle.
un type d'itérateur dont les types catégorie, valeur, différence, pointeur et types référence sont les mêmes que iterator. Cet itérateur peut être utilisé pour itérer à travers un seul compartiment mais pas à travers plusieurs compartiments
const_local_iterator
un type d'itérateur dont les types catégorie, valeur, différence, pointeur et types référence sont les mêmes que const_iterator. Cet itérateur peut être utilisé pour itérer à travers un seul compartiment mais pas à travers plusieurs compartiments
node_type(depuis C++17)
une spécialisation de node handle représentant un nœud de conteneur
insert_return_type(depuis C++17)
type décrivant le résultat de l'insertion d'un node_type, une spécialisation de
Les types membres
iterator
et
const_iterator
peuvent être des alias vers le même type. Cela signifie que définir une paire de surcharges de fonction utilisant ces deux types comme types de paramètres peut violer la
Règle de Définition Unique
. Étant donné que
iterator
est convertible en
const_iterator
, une fonction unique avec un
const_iterator
comme type de paramètre fonctionnera à la place.