std::hive
| Definiert in Header <hive>
|
||
template<
class T,
class Allocator = std::allocator<T>
> class hive;
|
(1) | (seit C++26) |
namespace pmr {
template<class T>
using hive = std::hive<T, std::pmr::polymorphic_allocator<T>>;
}
|
(2) | (seit C++26) |
std::hive ist ein sequenzieller Container, der Einfüge- und Löschoperationen in konstanter Zeit bereitstellt.Der Hive verwaltet seinen Speicher automatisch in mehreren Speicherblöcken (Elementblöcken). Die Einfügeposition ist nicht festgelegt, sodass der Container die Speicherpositionen gelöschter Elemente wiederverwenden kann.
Wenn aktive Blöcke (Elementblöcke, die Elemente enthalten) leer werden, können sie entweder freigegeben oder zu reservierten Blöcken werden.
Reservierte Blöcke werden zu aktiven Blöcken, wenn sie wiederverwendet werden, um Elemente zu speichern. Ein Benutzer kann durch Aufruf von reserve() zusätzliche reservierte Blöcke erstellen.
Löschen und Iteration haben beide konstante Zeitkomplexität.
Die Kapazität jedes aktiven Blocks wächst um einen implementierungsdefinierten Faktor (z. B. um 1.69). Sowohl Benutzer als auch Implementierungen können die minimale und maximale Elementkapazität von Elementblöcken begrenzen.
Ein std::hive erfüllt die Anforderungen von Container, mit Ausnahme der Operatoren == und !=. Ein std::hive erfüllt auch die Anforderungen von ReversibleContainer, von AllocatorAwareContainer und einige der Anforderungen von SequenceContainer.
| Dieser Abschnitt ist unvollständig Grund: Iterator-Beschreibungen |
Template-Parameter
| T | – | Der Typ der Elemente.
| ||
| Allocator | – | Ein Allokator, der zum Belegen/Freigeben von Speicher und zum Konstruieren/Zerstören der Elemente in diesem Speicher verwendet wird. Der Typ muss die Anforderungen von Allocator erfüllen. Das Programm ist fehlerhaft, wenn Allocator::value_type nicht dasselbe wie T ist.
|
Mitgliedstypen
| Mitgliedstyp | Definition |
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
|
implementierungsdefiniert |
difference_type
|
implementierungsdefiniert |
iterator
|
implementierungsdefiniert LegacyBidirectionalIterator zu value_type
|
const_iterator
|
implementierungsdefiniert LegacyBidirectionalIterator zu const value_type
|
reverse_iterator
|
std::reverse_iterator<iterator>
|
const_reverse_iterator
|
std::reverse_iterator<const_iterator>
|
Datenelemente
| Mitglied | Beschreibung |
hive_limits current-limits (privat)
|
aktuelle Blockkapazitätsgrenzen (zur Erläuterung offengelegtes Mitgliedsobjekt*) |
Mitgliedsfunktionen
erstellt das hive (öffentliche Mitgliedsfunktion) | |
zerstört das hive (öffentliche Mitgliedsfunktion) | |
| weist dem Container Werte zu (öffentliche Mitgliedsfunktion) | |
| weist dem Container Werte zu (öffentliche Mitgliedsfunktion) | |
| weist dem Container einen Wertebereich zu (öffentliche Mitgliedsfunktion) | |
| gibt den zugehörigen Allokator zurück (öffentliche Mitgliedsfunktion) | |
Iteratoren | |
| gibt einen Iterator auf den Anfang zurück (öffentliche Mitgliedsfunktion) | |
| gibt einen Iterator auf das Ende zurück (öffentliche Mitgliedsfunktion) | |
| gibt einen Reverse-Iterator auf den Anfang zurück (öffentliche Mitgliedsfunktion) | |
| gibt einen Reverse-Iterator auf das Ende zurück (öffentliche Mitgliedsfunktion) | |
Kapazität | |
| prüft, ob der Container leer ist (öffentliche Mitgliedsfunktion) | |
| gibt die Anzahl der Elemente zurück (öffentliche Mitgliedsfunktion) | |
| gibt die maximal mögliche Anzahl von Elementen zurück (öffentliche Mitgliedsfunktion) | |
| gibt die Anzahl der Elemente zurück, die im aktuell belegten Speicher gehalten werden können (öffentliche Mitgliedsfunktion) | |
| reserviert Speicher (öffentliche Mitgliedsfunktion) | |
| reduziert die Speichernutzung durch Freigabe ungenutzten Speichers (öffentliche Mitgliedsfunktion) | |
| gibt reservierte Blöcke frei und reduziert die Kapazität entsprechend (öffentliche Mitgliedsfunktion) | |
| gibt die aktuellen Blockkapazitätsgrenzen zurück (öffentliche Mitgliedsfunktion) | |
| gibt die Standard-Blockkapazitätsgrenzen zurück (öffentliche Mitgliedsfunktion) | |
| gibt die harten Blockkapazitätsgrenzen zurück (öffentliche Mitgliedsfunktion) | |
| prüft, ob die angegebenen Kapazitätsgrenzen eingehalten werden (öffentliche Mitgliedsfunktion) | |
| allokiert aktive Blöcke neu, sodass sie innerhalb der Blockgrenzen liegen (öffentliche Mitgliedsfunktion) |
Modifikatoren | |
| erzeugt ein Element direkt an Ort und Stelle (öffentliche Mitgliedsfunktion) | |
| erzeugt Elemente direkt an Ort und Stelle unter Verwendung eines Hinweises (öffentliche Mitgliedsfunktion) | |
| fügt Elemente ein (öffentliche Mitgliedsfunktion) | |
| fügt einen Bereich von Elementen ein (öffentliche Mitgliedsfunktion) | |
| löscht Elemente (öffentliche Mitgliedsfunktion) | |
| tauscht den Inhalt aus (öffentliche Mitgliedsfunktion) | |
| leert den Inhalt (öffentliche Mitgliedsfunktion) | |
Operationen | |
verschiebt Elemente aus einem anderen hive (öffentliche Mitgliedsfunktion) | |
| entfernt aufeinanderfolgende doppelte Elemente (öffentliche Mitgliedsfunktion) | |
| sortiert die Elemente (öffentliche Mitgliedsfunktion) | |
| gibt einen Iterator zurück, der auf dasselbe Element wie der angegebene Zeiger zeigt (öffentliche Mitgliedsfunktion) | |
Nicht-Mitgliedsfunktionen
(C++26) |
spezialisiert den std::swap-Algorithmus (Funktionstemplate) |
| löscht alle Elemente, die bestimmte Kriterien erfüllen (Funktionstemplate) |
Ableitungsregeln |
(seit C++26) |
Hilfsklassen
(C++26) |
Layout-Informationen über Blockkapazitätsgrenzen in std::hive (Klasse) |
Anmerkungen
| Feature-Test-Makro | Wert | Std | Funktion |
|---|---|---|---|
__cpp_lib_hive |
202502L |
(C++26) | std::hive
|
Beispiel
| Dieser Abschnitt ist unvollständig Grund: kein Beispiel |
Siehe auch
| doppelt verkettete Liste (Klassentemplate) | |
(C++11) |
einfach verkettete Liste (Klassentemplate) |
Externe Links
| 1. | plf::hive — Eine Referenzimplementierung auf github.com
|
| 2. | Bienenstock auf Wikipedia.org |