std::hive
| 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) |
std::hive est un conteneur séquentiel qui fournit des opérations d'insertion et de suppression en temps constant.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.
| Cette section est incomplète Raison : descriptions des itérateurs |
Paramètres du modèle
| T | - | Le type des éléments.
| ||
| 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
(C++26) |
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
(C++26) |
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
| Cette section est incomplète Raison : pas d'exemple |
Voir aussi
| liste doublement chaînée (modèle de classe) | |
(C++11) |
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 |