Es existieren mehr als 100 Boost-Bibliotheken. In diesem Buch werden Ihnen folgende vorgestellt:
Boost-Bibliothek | Standard | Kurzbeschreibung |
---|---|---|
Boost.Accumulators | Boost.Accumulators bietet Akkumulatoren an, denen Zahlen hinzugefügt werden können, um zum Beispiel den Durchschnittswert oder die Standardabweichung zu erhalten. | |
Boost.Algorithm | Boost.Algorithm bietet verschiedene Algorithmen an, die die Algorithmen der Standardbibliothek ergänzen. | |
Boost.Any | Boost.Any stellt mit boost::any eine Klasse zur Verfügung, die Daten beliebiger Typen speichern kann. |
|
Boost.Array | TR1, C++11 | Boost.Array ermöglicht es, ein herkömmliches Array wie einen echten Container zu behandeln. |
Boost.Asio | Mit Boost.Asio können Programme entwickelt werden, die Daten asynchron verarbeiten – zum Beispiel Netzwerkanwendungen. | |
Boost.Assign | Boost.Assign bietet Hilfsfunktionen an, um mehrere Werte in einem Container speichern zu können, ohne wiederholt Methoden wie push_back() aufrufen zu müssen. |
|
Boost.Atomic | C++11 | Boost.Atomic bietet mit boost::atomic eine Klasse an, um in Multithreaded-Anwendungen atomare Operationen auf integrale Typen anwenden zu können. |
Boost.Bimap | Boost.Bimap stellt eine Klasse boost::bimap zur Verfügung, die ähnlich funktioniert wie std::map . Der entscheidende Unterschied ist, dass bei boost::bimap sowohl nach Schlüsseln als auch nach Werten gesucht werden kann. |
|
Boost.Bind | TR1, C++11 | Boost.Bind ist eine Art Adapter, der ermöglicht, Funktionen als Template-Parameter zu übergeben, selbst wenn der Funktionskopf mit dem vom Template erwarteten Parameter inkompatibel ist. |
Boost.Chrono | C++11 | Boost.Chrono bietet zahlreiche Uhren an, um zum Beispiel die aktuelle Uhrzeit zu erhalten oder die CPU-Zeit zu ermitteln. |
Boost.CircularBuffer | Boost.CircularBuffer stellt einen ringförmigen Container mit einer konstanten Speichergröße zur Verfügung. | |
Boost.CompressedPair | Boost.CompressedPair bietet mit boost::compressed_pair eine Datenstruktur an, die std::pair ähnelt, jedoch weniger Speicherplatz benötigt, wenn Template-Parameter leere Klassen sind. |
|
Boost.Container | Boost.Container stellt alle Container aus der Standardbibliothek zur Verfügung. Darüber hinaus werden von dieser Bibliothek weitere Container wie boost::container::slist angeboten. |
|
Boost.Conversion | Boost.Conversion bietet zwei Cast-Operatoren an, um Down- und Crosscasts durchzuführen. | |
Boost.Coroutine | Boost.Coroutine macht es möglich, Coroutinen, wie sie in anderen Programmiersprachen häufig mit dem Schlüsselwort yield in Verbindung gebracht werden, in C++ zu nutzen. |
|
Boost.DateTime | Boost.DateTime kann verwendet werden, wenn Datumsangaben und Uhrzeiten verarbeitet und flexibel formatiert ein- und ausgegeben werden sollen. | |
Boost.DynamicBitset | Boost.DynamicBitset stellt eine Datenstruktur zur Verfügung, die grundsätzlich genauso funktioniert wie std::bitset , jedoch zur Laufzeit konfiguriert wird. |
|
Boost.EnableIf | C++11 | Boost.EnableIf macht es möglich, Funktionen basierend auf Typ-Eigenschaften zu überladen. |
Boost.Exception | Boost.Exception ermöglicht es, einer geworfenen Ausnahme zusätzliche Daten hinzuzufügen, um in catch -Handlern mehr Informationen zur Verfügung zu haben. |
|
Boost.Filesystem | Boost.Filesystem bietet eine Klasse zum Verarbeiten von Pfadangaben und zahlreiche Funktionen an, um auf Dateien und Verzeichnisse zuzugreifen. | |
Boost.Flyweight | Boost.Flyweight macht es einfach, das gleichnamige Entwurfsmuster einzusetzen – auf Deutsch Fliegengewicht. | |
Boost.Foreach | Boost.Foreach stellt ein Makro zur Verfügung, das ähnlich wie die range-basierte for -Schleife in C++11 funktioniert. |
|
Boost.Format | Boost.Format ersetzt std::printf() durch eine typsichere und erweiterbare Klasse boost::format . |
|
Boost.Function | TR1, C++11 | Boost.Function vereinfacht die Definition von Funktionszeigern. |
Boost.Fusion | Boost.Fusion erlaubt es, heterogene Container zu erstellen – Container, die Werte unterschiedlicher Typen speichern. | |
Boost.Graph | Boost.Graph bietet Algorithmen an, um in einem Graphen beispielsweise den kürzesten Weg zwischen zwei Punkten zu finden. | |
Boost.Heap | Boost.Heap bietet zahlreiche Varianten der aus der Standardbibliothek bekannten Klasse std::priority_queue an. |
|
Boost.Integer | C++11 | Boost.Integer bietet spezialisierte Typen für Ganzzahlen an, wie sie C-Entwicklern seit dem im Jahr 1999 verabschiedeten Standard C99 zur Verfügung stehen. |
Boost.Interprocess | Boost.Interprocess gestattet Prozessen, schnell und effizient über gemeinsam genutzte Speicherbereiche zu kommunizieren. | |
Boost.Intrusive | Boost.Intrusive stellt Container zur Verfügung, die eine höhere Performance als Container aus der Standardbibliothek bieten können. Sie stellen jedoch besondere Anforderungen an Daten, die in ihnen gespeichert werden sollen. | |
Boost.IOStreams | Boost.IOStreams bietet Streams und Filter an. So kann ein Stream mit einem Filter verbunden werden, um zum Beispiel Daten, die in den Stream geschrieben werden, zu komprimieren. | |
Boost.Lambda | Boost.Lambda ermöglicht die Definition anonymer Funktionen – also Funktionen ohne Namen – auch ohne C++11. | |
Boost.LexicalCast | Boost.LexicalCast bietet einen Cast-Operator, mit dem Zahlen in einen String und zurück umgewandelt werden können. | |
Boost.Lockfree | Boost.Lockfree bietet thread-safe Container an. Auf Container dieser Bibliothek darf von mehreren Threads aus gleichzeitig zugegriffen werden. | |
Boost.Log | Boost.Log ist die Logging-Bibliothek in Boost. | |
Boost.MinMax | C++11 | Boost.MinMax stellt einen Algorithmus zur Verfügung, mit dem das kleinste und größte Element in einem Container gefunden werden kann, ohne zwei Funktionsaufrufe – nämlich für std::min() und std::max() – machen zu müssen. |
Boost.MPI | Boost.MPI bietet eine C++-Schnittstelle für den MPI-Standard an. | |
Boost.MetaStateMachine | Boost.MetaStateMachine macht es möglich, Zustandsautomaten zu entwickeln, wie sie in der UML definiert sind. | |
Boost.MultiArray | Boost.MultiArray erleichtert den Umgang mit mehrdimensionalen Arrays. | |
Boost.MultiIndex | Mit Boost.MultiIndex können neue Container definiert werden, die gleichzeitig mehrere Schnittstellen wie beispielsweise die von std::vector und std::map unterstützen. |
|
Boost.NumericConversion | Boost.NumericConversion bietet einen Cast-Operator an, der Zahlen zwischen Typen unterschiedlicher Bandbreite sicher konvertiert, ohne dass es einen unbemerkten Überlauf geben kann. | |
Boost.Operators | Mit Boost.Operators können Operatoren automatisch basierend auf anderen bereits definierten Operatoren definiert werden. | |
Boost.Optional | Boost.Optional bietet eine Klasse an, mit der optionale Rückgabewerte gekennzeichnet werden können. Funktionen, die nicht immer ein Ergebnis zurückgeben können, müssen dann nicht auf spezielle Werte wie -1 oder einen Nullzeiger zugreifen, um anzugeben, dass kein Ergebnis vorliegt. | |
Boost.Parameter | Boost.Parameter erlaubt es, Parameter an Funktionen als Name/Wert-Paar zu übergeben, wie es zum Beispiel die Programmiersprache Python ermöglicht. | |
Boost.Phoenix | Boost.Phoenix macht es möglich, ohne C++11 Lambda-Funktionen zu erstellen. Im Gegensatz zu C++11-Lambda-Funktionen sind die mit dieser Bibliothek erstellten Lambda-Funktion generisch – etwas, was in C++ erst seit C++14 unterstützt wird. | |
Boost.PointerContainer | Boost.PointerContainer bietet Container an, die für die Verwaltung dynamisch reservierter Objekte optimiert sind. | |
Boost.Pool | Boost.Pool ist eine Bibliothek zur Verwaltung von Speicher. So bietet Boost.Pool beispielsweise einen Allokator, der Speicher unter Umständen schneller zur Verfügung stellen kann als der Standardallokator. | |
Boost.ProgramOptions | Boost.ProgramOptions erlaubt es einer Anwendung, Kommandozeilenparameter zu definieren und auszuwerten. | |
Boost.PropertyTree | Boost.PropertyTree stellt einen Container zur Verfügung, in dem Schlüssel/Wert-Paare in einer Baumstruktur gespeichert werden. Auf diese Weise sollen Konfigurationsdaten, wie sie in vielen Anwendungen verwendet werden, einfach verwaltet werden können. | |
Boost.Random | TR1, C++11 | Boost.Random stellt Generatoren für Zufallszahlen zur Verfügung. |
Boost.Range | Boost.Range führt mit der Range ein Konzept ein, das die Iteratoren ersetzt, die üblicherweise von Containern über begin() und end() erhalten und als Paar an Algorithmen übergeben werden müssen. |
|
Boost.Ref | TR1, C++11 | Die Adapter von Boost.Ref ermöglichen es, Referenzen auf Objekte, die nicht kopiert werden können oder sollen, an Funktionen zu übergeben, die Kopien erwarten. |
Boost.Regex | TR1, C++11 | Boost.Regex bietet Funktionen an, um Strings mit Hilfe regulärer Ausdrücke zu durchsuchen. |
Boost.ScopeExit | Boost.ScopeExit bietet Makros an, um Code-Blöcke zu definieren, die ausgeführt werden, wenn der aktuelle Gültigkeitsbereich endet. So kann sichergestellt werden, dass Ressourcen am Ende eines Gültigkeitsbereichs freigegeben werden, ohne auf Smartpointer oder andere Klassen zugreifen zu müssen. | |
Boost.Serialization | Mit Boost.Serialization können Objekte serialisiert und in Dateien gespeichert und später wieder von ihnen geladen werden. | |
Boost.Signals2 | Boost.Signals2 ist ein Framework zur Ereignisverarbeitung. Es setzt das Signal-Slot-Konzept um: Funktionen werden mit Signalen verbunden und automatisch aufgerufen, wenn Signale ausgelöst werden. | |
Boost.SmartPoiners | TR1, C++11 | Boost.SmartPointers bietet zahlreiche Smartpointer an, die die Verwaltung von dynamisch reservierten Objekten vereinfachen. |
Boost.Spirit | Boost.Spirit ermöglicht es, Parser zu generieren, indem Regeln in einer Syntax niedergeschrieben werden, die der EBNF (Erweiterte Backus-Naur-Form) ähnelt. | |
Boost.StringAlgorithms | In der Bibliothek Boost.StringAlgorithms stehen zahlreiche freistehende Funktionen zur Verfügung, die es einfacher machen, Strings zu verarbeiten. | |
Boost.Swap | Boost.Swap bietet mit boost::swap() einen Algorithmus an, der sich so verhält wie std::swap() , jedoch für viele Boost-Bibliotheken optimiert ist. |
|
Boost.System | C++11 | Boost.System stellt ein Framework zur Verfügung, um system- und anwendungsspezifische Fehlercodes zu verarbeiten. |
Boost.Thread | C++11 | Boost.Thread ermöglicht es, Multithreaded-Programme zu entwickeln. |
Boost.Timer | Boost.Timer bietet Uhren an, um die Ausführungsgeschwindigkeit von Code zu messen. | |
Boost.Tokenizer | Mit Boost.Tokenizer kann über einzelne Bestandteile eines Strings iteriert werden. | |
Boost.Tribool | Boost.Tribool bietet einen Typ an, der nicht wie bool zwei, sondern drei Status kennt. |
|
Boost.Tuple | TR1, C++11 | Boost.Tuple bietet eine verallgemeinerte Version von std::pair an. So können in der von Boost.Tuple zur Verfügung gestellten Klasse nicht nur zwei, sondern beliebig viele Werte gruppiert werden. |
Boost.TypeTraits | TR1, C++11 | Boost.TypeTraits bietet Funktionen an, um Typen auf Eigenschaften zu überprüfen. |
Boost.Unordered | TR1, C++11 | Boost.Unordered bietet mit boost::unordered_set und boost::unordered_map zwei Hash-Container an. |
Boost.Utility | Boost.Utility ist ein Sammelsurium verschiedener Hilfsmittel, die jeweils zu klein sind, um in ihrer eigenen Bibliothek gepflegt zu werden. Was keine eigene Bibliothek rechtfertigt und nicht in andere Bibliotheken passt, wird in Boost.Utility abgelegt. | |
Boost.Uuid | Boost.Uuid bietet eine Klasse boost::uuids::uuid und Generatoren zur Erzeugung von UUIDs an. |
|
Boost.Variant | Boost.Variant ermöglicht die Definition von Typen, die ähnlich wie union mehrere Typen gruppieren. Der Vorteil von Boost.Variant ist, dass in dieser Gruppe beliebige Klassen verwendet werden können. |
|
Boost.Xpressive | Boost.Xpressive ermöglicht es, reguläre Ausdrücke auf Strings anzuwenden. Reguläre Ausdrücke werden nicht als Strings angegeben, sondern als C++-Code. |
Die voraussichtlich nächste Version des Standards wird C++17 sein. Rund um C++17 existieren zahlreiche auf bestimmte Themenblöcke spezialisierte Projektgruppen. Diese sind als Technische Spezifikationen bekannt – kurz TS. In der File System TS wird zum Beispiel basierend auf Boost.Filesystem über eine Erweiterung des Standards zum Zugriff auf Dateien und Verzeichnisse nachgedacht. Weitere Informationen zu C++17 und dem Standardisierungsprozess zu C++ finden Sie unter isocpp.org.