Datenstrukturen sind container-ähnliche Objekte, die ein oder mehrere Elemente speichern können. Sie unterscheiden sich von Containern, da sie bestimmten Einschränkungen unterliegen. So ist es zum Beispiel mit einigen Datenstrukturen, die im Folgenden vorgestellt werden, nicht möglich, in einer einzigen Iteration auf alle Elemente zuzugreifen.
Boost.Optional macht es einfach, optionale Rückgabewerte zu kennzeichnen. Objekte, die mit Boost.Optional erstellt werden, sind entweder leer oder enthalten genau ein Element. So muss nicht auf spezielle Werte wie -1 oder einen Nullzeiger zugegriffen werden, um anzugeben, dass eine Funktion keinen Wert zurückgibt.
Boost.Tuple bietet mit boost::tuple
eine Klasse an, die seit C++11 auch von der Standardbibliothek angeboten wird.
Mit Boost.Any und Boost.Variant können Variablen erstellt werden, die Werte unterschiedlicher Typen speichern können. Während Boost.Any tatsächlich jeden beliebigen Typ unterstützt, werden die von einer Boost.Variant-Variablen zu unterstützenden Typen als Template-Parameter angegeben.
Boost.PropertyTree bietet eine Baumstruktur an. Die Bibliothek wird üblicherweise verwendet, um Konfigurationsdaten in einem Programm zu verwalten. Es ist möglich, die Baumstruktur zu serialisieren und in einer Datei zu speichern.
Boost.DynamicBitset bietet eine Klasse an, die std::bitset
ähnelt, jedoch zur Laufzeit konfiguriert wird.
Die von Boost.Tribool angebotene Datenstruktur ähnelt bool
, kennt jedoch drei Status.
Boost.CompressedPair definiert mit boost::compressed_pair
eine Klasse, die std::pair
ersetzen kann und die sogenannte empty base class optimization unterstützt.