Wenn Sie einen Pre-TR1-Compiler verwenden, verwenden Sie intelligente Zeiger
boost::shared_ptr
boost::weak_ptr
boost::scoped_ptr
boost::scoped_array
boost::shared_array
Wenn Ihr Compiler bereits über intelligente Zeiger verfügt, verwenden Sie diese.
Der Grund ist offensichtlich, dass C ++ ohne intelligente Zeiger im Grunde kein C ++ ist
Die Bibliotheken boost ptr_contaier.
Alle STL-Container wurden neu implementiert, um Zeiger aufzunehmen. Die Container übernehmen nicht nur das Eigentum an den Zeigern, sondern zerstören automatisch alle Zeiger, wenn der Container zerstört wird. ABER es bietet auch Zugriff auf Elemente als normale Objektreferenzen (keine Zeiger). Dies macht es einfach, die Objekte in Standardalgorithmen ohne Wrapper-Funktoren zu verwenden.
Die Boost-Lambda-Bibliotheken. (siehe Kommentar unten)
Die STL-Funktoren und -Binder sind für einfache Dinge in Ordnung. Aber boost :: lambda hat den nächsten Schritt gemacht und vereinfacht die Arbeit mit den Standardalgorithmen erheblich.
boost :: any und boost :: variant
Wenn Sie Objekte halten müssen, ohne deren genauen Typ kennen zu wollen.
Multi-Index-Container
Container, die den Zugriff auf die Elemente auf verschiedene Weise ermöglichen.
Vorbei sind die Zeiten, in denen Sie einen Objektvektor und eine separate Karte für die schnelle Vektorsuche haben. Dies verringert die Anzahl der Kesselplatten, die Sie schreiben müssen, um die beiden Container beim Einfügen / Löschen von Elementen in die Container zu erhalten.
boost :: lexical_cast
Im wirklichen Leben wahrscheinlich am wenigsten nützlich, aber es macht viel Spaß, damit zu spielen, ist boost :: lexical_cast. Es konvertiert jedes Objekt in / aus einem String (solange für diesen Typ die entsprechenden << und >> Operatoren definiert sind). Sehr nützlich zum Ausgeben von Fehlermeldungen beim Debuggen.