Namespaces
Variants

std::hive

Depuis fr.cppreference.net
 
 
 
 
Défini dans l'en-tête <hive>
template<
    class T,
    class Allocator = std::allocator<T>
> class hive;
(1) (depuis C++26)
namespace pmr {
    template<class T>
    using hive = std::hive<T, std::pmr::polymorphic_allocator<T>>;
}
(2) (depuis C++26)


1) std::hive est un conteneur séquentiel qui fournit des opérations d'insertion et de suppression en temps constant.
2) std::pmr::hive est un modèle d'alias qui utilise un allocateur polymorphe.

Le hive gère automatiquement son stockage sur plusieurs blocs de mémoire (blocs d'éléments). La position d'insertion n'est pas spécifiée, de sorte que le conteneur peut réutiliser les emplacements mémoire des éléments supprimés.

Lorsque les blocs actifs (blocs d'éléments qui contiennent des éléments) deviennent vides, ils peuvent être soit désalloués, soit devenir des blocs réservés.

Les blocs réservés deviennent des blocs actifs lorsqu'ils sont réutilisés pour stocker des éléments. Un utilisateur peut créer des blocs réservés supplémentaires en appelant reserve().

La suppression et l'itération ont toutes deux une complexité en temps constant.

La capacité de chaque bloc actif croît selon un facteur défini par l'implémentation (par exemple, par 1.69). Les utilisateurs et les implémentations peuvent limiter les capacités minimale et maximale des blocs d'éléments.

Un std::hive satisfait aux exigences de Container, à l'exception des opérateurs == et !=. Un std::hive satisfait également aux exigences de ReversibleContainer, de AllocatorAwareContainer, et à certaines des exigences de SequenceContainer.

Paramètres du modèle

T - Le type des éléments.
Les exigences imposées aux éléments dépendent des opérations réellement effectuées sur le conteneur. En général, il est exigé que le type d'élément soit un type complet et satisfasse aux exigences de Erasable, mais de nombreuses fonctions membres imposent des exigences plus strictes.

Allocator - Un allocateur utilisé pour acquérir/libérer de la mémoire et pour construire/détruire les éléments dans cette mémoire. Le type doit satisfaire aux exigences de Allocator. Le programme est mal formé si Allocator::value_type n'est pas identique à T.

Types membres

Type membre Définition
value_type T
allocator_type Allocator
pointer std::allocator_traits<Allocator>::pointer
const_pointer std::allocator_traits<Allocator>::const_pointer
reference value_type&
const_reference const value_type&
size_type défini par l'implémentation
difference_type défini par l'implémentation
iterator défini par l'implémentation LegacyBidirectionalIterator vers value_type
const_iterator défini par l'implémentation LegacyBidirectionalIterator vers const value_type
reverse_iterator std::reverse_iterator<iterator>
const_reverse_iterator std::reverse_iterator<const_iterator>

Données membres

Membre Description
hive_limits current-limits (privé) limites actuelles de capacité des blocs
(objet membre d'exposition*)

Fonctions membres

construit le hive
(fonction membre publique)
détruit le hive
(fonction membre publique)
assigne des valeurs au conteneur
(fonction membre publique)
assigne des valeurs au conteneur
(fonction membre publique)
assigne une plage de valeurs au conteneur
(fonction membre publique)
renvoie l'allocateur associé
(fonction membre publique)
Itérateurs
renvoie un itérateur sur le début
(fonction membre publique)
renvoie un itérateur sur la fin
(fonction membre publique)
renvoie un itérateur inverse sur le début
(fonction membre publique)
renvoie un itérateur inverse sur la fin
(fonction membre publique)
Capacité
vérifie si le conteneur est vide
(fonction membre publique)
renvoie le nombre d'éléments
(fonction membre publique)
renvoie le nombre maximal possible d'éléments
(fonction membre publique)
renvoie le nombre d'éléments pouvant être contenus dans le stockage actuellement alloué
(fonction membre publique)
réserve du stockage
(fonction membre publique)
réduit l'utilisation mémoire en libérant la mémoire inutilisée
(fonction membre publique)
désalloue les blocs réservés et réduit la capacité en conséquence
(fonction membre publique)
renvoie les limites actuelles de capacité des blocs
(fonction membre publique)
renvoie les limites par défaut de capacité des blocs
(fonction membre publique)
renvoie les limites strictes de capacité des blocs
(fonction membre publique)
vérifie si les limites de capacité données sont respectées
(fonction membre publique)
réaloue les blocs actifs pour qu'ils soient dans les limites des blocs
(fonction membre publique)
Modificateurs
construit un élément sur place
(fonction membre publique)
construit des éléments sur place en utilisant un indicateur
(fonction membre publique)
insère des éléments
(fonction membre publique)
insère une plage d'éléments
(fonction membre publique)
supprime des éléments
(fonction membre publique)
échange le contenu
(fonction membre publique)
vide le contenu
(fonction membre publique)
Opérations
déplace des éléments depuis un autre hive
(fonction membre publique)
supprime les éléments consécutifs en double
(fonction membre publique)
trie les éléments
(fonction membre publique)
renvoie un itérateur pointant vers le même élément que le pointeur donné
(fonction membre publique)

Fonctions non membres

spécialise l'algorithme std::swap
(modèle de fonction)
supprime tous les éléments satisfaisant des critères spécifiques
(modèle de fonction)

Guides de déduction

(depuis C++26)

Classes d'aide

informations de disposition sur les limites de capacité des blocs dans std::hive
(classe)

Notes

Macro de test de fonctionnalité Valeur Std Fonctionnalité
__cpp_lib_hive 202502L (C++26) std::hive

Exemple

Voir aussi

liste doublement chaînée
(modèle de classe)
liste simplement chaînée
(modèle de classe)

Liens externes

1.  plf::hive — Une implémentation de référence sur github.com
2.  Hive (structure de données) sur Wikipedia.com