Namespaces
Variants

std::unordered_set<Key,Hash,KeyEqual,Allocator>:: unordered_set

From cppreference.net

Seules les parties suivantes ont été traduites : - "(since C++14)" → "(depuis C++14)" Tous les autres éléments (balises HTML, code C++, termes techniques) ont été conservés dans leur forme originale comme demandé.
(1)
unordered_set ( )
: unordered_set ( size_type ( /* unspecified */ ) ) { }
(depuis C++11)
(jusqu'à C++20)
unordered_set ( ) ;
(depuis C++20)
explicit unordered_set ( size_type bucket_count,

const Hash & hash = Hash ( ) ,
const key_equal & equal = key_equal ( ) ,

const Allocator & alloc = Allocator ( ) ) ;
(2) (depuis C++11)
unordered_set ( size_type bucket_count,

const Allocator & alloc )

: unordered_set ( bucket_count, Hash ( ) , key_equal ( ) , alloc ) { }
(3) (depuis C++14)
unordered_set ( size_type bucket_count,

const Hash & hash,
const Allocator & alloc )

: unordered_set ( bucket_count, hash, key_equal ( ) , alloc ) { }
(4) (depuis C++14)
explicit unordered_set ( const Allocator & alloc ) ;
(5) (depuis C++11)
template < class InputIt >

unordered_set ( InputIt first, InputIt last,
size_type bucket_count = /* non spécifié */ ,
const Hash & hash = Hash ( ) ,
const key_equal & equal = key_equal ( ) ,

const Allocator & alloc = Allocator ( ) ) ;
(6) (depuis C++11)
template < class InputIt >

unordered_set ( InputIt first, InputIt last,
size_type bucket_count,
const Allocator & alloc )
: unordered_set ( first, last,

bucket_count, Hash ( ) , key_equal ( ) , alloc ) { }
(7) (depuis C++14)
template < class InputIt >

unordered_set ( InputIt first, InputIt last,
size_type bucket_count,
const Hash & hash,
const Allocator & alloc )
: unordered_set ( first, last,

bucket_count, hash, key_equal ( ) , alloc ) { }
(8) (depuis C++14)
unordered_set ( const unordered_set & other ) ;
(9) (depuis C++11)
unordered_set ( const unordered_set & other, const Allocator & alloc ) ;
(10) (depuis C++11)
unordered_set ( unordered_set && other ) ;
(11) (depuis C++11)
unordered_set ( unordered_set && other, const Allocator & alloc ) ;
(12) (depuis C++11)
unordered_set ( std:: initializer_list < value_type > init,

size_type bucket_count = /* non spécifié */ ,
const Hash & hash = Hash ( ) ,
const key_equal & equal = key_equal ( ) ,

const Allocator & alloc = Allocator ( ) ) ;
(13) (depuis C++11)
unordered_set ( std:: initializer_list < value_type > init,

size_type bucket_count,
const Allocator & alloc )
: unordered_set ( init, bucket_count,

Hash ( ) , key_equal ( ) , alloc ) { }
(14) (depuis C++14)
unordered_set ( std:: initializer_list < value_type > init,

size_type bucket_count,
const Hash & hash,
const Allocator & alloc )
: unordered_set ( init, bucket_count,

hash, key_equal ( ) , alloc ) { }
(15) (depuis C++14)
template < container-compatible-range < value_type > R >

unordered_set ( std:: from_range_t , R && rg,
size_type bucket_count = /* voir description */ ,
const Hash & hash = Hash ( ) ,
const key_equal & equal = key_equal ( ) ,

const Allocator & alloc = Allocator ( ) ) ;
(16) (depuis C++23)
template < container-compatible-range < value_type > R >

unordered_set ( std:: from_range_t , R && rg,
size_type bucket_count,
const Allocator & alloc )
: unordered_set ( std:: from_range , std:: forward < R > ( rg ) ,

bucket_count, Hash ( ) , key_equal ( ) , alloc ) { }
(17) (depuis C++23)
template < container-compatible-range < value_type > R >

unordered_set ( std:: from_range_t , R && rg,
size_type bucket_count,
const Hash & hash,
const Alloc & alloc )
: unordered_set ( std:: from_range , std:: forward < R > ( rg ) ,

bucket_count, hash, key_equal ( ) , alloc ) { }
(18) (depuis C++23)

Construit un nouveau conteneur à partir de diverses sources de données. Utilise optionnellement le bucket_count fourni par l'utilisateur comme nombre minimal de compartiments à créer, hash comme fonction de hachage, equal comme fonction de comparaison des clés et alloc comme allocateur.

1-5) Construit un conteneur vide. Définit max_load_factor() à 1.0 . Pour le constructeur par défaut, le nombre de buckets n'est pas spécifié.
6-8) Construit le conteneur avec le contenu de la plage [ first , last ) . Définit max_load_factor() à 1.0 . Si plusieurs éléments dans la plage ont des clés équivalentes, il n'est pas spécifié quel élément est inséré (en attente de LWG2844 ).
9,10) Constructeur de copie. Construit le conteneur avec la copie du contenu de other , copie également le facteur de charge, le prédicat et la fonction de hachage. Si alloc n'est pas fourni, l'allocateur est obtenu en appelant std:: allocator_traits < allocator_type > :: select_on_container_copy_construction ( other. get_allocator ( ) ) .

Le paramètre template Allocator est uniquement déduit du premier argument lorsqu'il est utilisé dans la déduction d'arguments de template de classe .

(depuis C++23)
11,12) Constructeur de déplacement . Construit le conteneur avec le contenu de other en utilisant la sémantique de déplacement. Si alloc n'est pas fourni, l'allocateur est obtenu par construction par déplacement depuis l'allocateur appartenant à other .

Le paramètre template Allocator est uniquement déduit du premier argument lors de son utilisation dans la déduction d'arguments de template de classe .

(depuis C++23)
13-15) Constructeur de liste d'initialisation . Construit le conteneur avec le contenu de la liste d'initialisation init , identique à unordered_set ( init. begin ( ) , init. end ( ) ) .
16-18) Construit le conteneur avec le contenu de rg . Si plusieurs éléments dans la plage ont des clés qui sont équivalentes par comparaison, il n'est pas spécifié quel élément est inséré (en attente de LWG2844 ).

Table des matières

Paramètres

alloc - allocateur à utiliser pour toutes les allocations de mémoire de ce conteneur
bucket_count - nombre minimal de compartiments à utiliser lors de l'initialisation. S'il n'est pas spécifié, une valeur par défaut non spécifiée est utilisée
hash - fonction de hachage à utiliser
equal - fonction de comparaison à utiliser pour toutes les comparaisons de clés de ce conteneur
first, last - la paire d'itérateurs définissant la plage source des éléments à copier
rg - une plage compatible avec le conteneur , c'est-à-dire une input_range dont les éléments sont convertibles en value_type
other - un autre conteneur à utiliser comme source pour initialiser les éléments du conteneur
init - liste d'initialisation pour initialiser les éléments du conteneur
Exigences de type
-
InputIt doit satisfaire aux exigences de LegacyInputIterator .

Complexité

1-5) Constant.
6-8) Cas moyen linéaire (c'est-à-dire O(N) , où N est std:: distance ( first, last ) ), cas le pire quadratique, c'est-à-dire O(N 2 ) .
9,10) Linéaire en fonction de la taille de other .
11,12) Constant. Si alloc est fourni et alloc ! = other. get_allocator ( ) , alors linéaire.
13-15) Cas moyen O(N) ( N est std:: size ( init ) ), cas le plus défavorable O(N 2 ) .
16-18) Cas moyen O(N) ( N est ranges:: distance ( rg ) ), cas le plus défavorable O(N 2 ) .

Exceptions

Les appels à Allocator::allocate peuvent lever une exception.

Notes

After container move construction (overload ( 11,12 ) ), references, pointers, and iterators (other than the end iterator) to autre remain valid, but refer to elements that are now in * this . The current standard makes this guarantee via the blanket statement in [container.reqmts]/67 , and a more direct guarantee is under consideration via Problème LWG 2321 .

Bien que non formellement requis avant C++23, certaines implémentations ont déjà placé le paramètre template Allocator dans des contextes non déduits dans les modes antérieurs.

Macro de test de fonctionnalité Valeur Std Fonctionnalité
__cpp_lib_containers_ranges 202202L (C++23) Construction et insertion compatibles avec les gammes ; surcharges ( 16-18 )

Exemple

Rapports de défauts

Les rapports de défauts modifiant le comportement suivants ont été appliqués rétroactivement aux normes C++ précédemment publiées.

DR Appliqué à Comportement publié Comportement corrigé
LWG 2193 C++11 le constructeur par défaut ( 1 ) était explicite rendu non-explicite
LWG 2230 C++11 la sémantique de la surcharge ( 13 ) n'était pas spécifiée spécifiée

Voir aussi

assigne des valeurs au conteneur
(fonction membre publique)