Wo soll man lernen, die Boost-Bibliotheken zu benutzen?

16

Boost ist seit kurzem für das Projekt verfügbar, an dem ich arbeite, und ich habe nicht viel Erfahrung damit. Die Bibliothek hat so viele Teile und Funktionen, dass man kaum weiß, wo man anfangen soll, um sie zu erlernen - zumal ich versuchen werde, sie zu erlernen, während ich den Produktionscode erstelle (daher kann es mich nicht zu sehr verlangsamen).

Ich würde es sehr begrüßen, wenn jemand 3 bis 5 Funktionen auflisten könnte, die im Allgemeinen sehr nützlich sind, die tägliche Programmierung und die Gründe, warum sie nützlich sind. Dann kann ich anfangen, diese zu lernen und sie zu benutzen - es gibt mir zumindest einen Halt in der Bibliothek und einen freundlichen Ort, an dem ich anfangen kann, sie zu lernen / anzuwenden :)

Danke im Voraus!

John Humphreys - w00te
quelle
Ich verstehe in diesem Zusammenhang den Ausdruck "Fuß in der Bibliothek" nicht. Was ist los mit Büchern? Es gibt ein paar zu diesem Thema von den üblichen Anbietern. Es sollte ein Muss sein, sie im Bücherregal Ihres Teams zu haben.
Aquaherd
Ich lese die ganze Zeit zum Programmieren - ich habe nicht die Zeit, ein Buch oder ein Nachschlagewerk zum Thema Boost Back-to-Front zu lesen, um zu wissen, was es hat und ob es gerade nützlich ist oder nicht. Ich würde es gerne hier und da einsetzen und es während der Arbeit langsam aufnehmen, und ich wollte ein paar Kernbeispiele für wirklich nützliche Boost-Komponenten. Zum Beispiel spricht Effective C ++ von Scott Meyers über shared_ptr non stop (und sehr wenig anderes), weil es so gut ist. Was ist sonst noch ungewöhnlich hilfreich bei Boost?
John Humphreys - w00te
Ich persönlich mochte die BOOST_FOREACH-Makros, die Beobachter- / Abonnentenmuster, die regulären Ausdrücke, die Datums- / Zeit-Parser (Facetten) sehr, aber ich bin ihnen entweder zufällig begegnet, als ich den vorhandenen Boost mithilfe von Code oder wie in DeadMG beschrieben modifizierte. Ich habe nur die Spitze des Eisbergs gekratzt, die Boost ist, aber es fühlte sich wie eine natürliche Fortsetzung der STL an.
Aquaherd

Antworten:

8

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.

Martin York
quelle
1
Boost.Phoenix hat offiziell Boost.Lambda ersetzt, das jetzt als veraltet gilt. Bitte empfehlen Sie das erstere anstelle des letzteren für neuen Code. : -]
ildjarn
16

Boost ist weder ein Framework noch eine Bibliothek. Es handelt sich um eine qualitätsgeprüfte, von Fachleuten geprüfte Bibliothekssammlung. Du lernst Boost nicht. Die Bibliotheken sind individuell. Wenn Sie etwas benötigen, überprüfen Sie, ob es sich in Boost befindet. Wenn dies der Fall ist, lernen Sie diese Bibliothek kennen. Das ist es. Sie können boost :: optional nicht verstehen, wenn Sie boost :: variant verstehen.

DeadMG
quelle
4
Man könnte sagen, dass Boost ein Qualitätslabel und ein Vertriebsset ist.
Klaim 04.10.11
1

Boost ist eine Sammlung von Bibliotheken. Wenn Sie das nächste Mal eine Code-Kata erstellen, wählen Sie in Boost eine Bibliothek aus, von der Sie glauben, dass sie Ihnen hilft, und verwenden Sie sie. Die Dokumentation ist sehr gut und Sie sollten keine Probleme haben, einfache Verwendungen zu erlernen. Komplexere werden kommen, wenn Sie versuchen, klügere Dinge zu tun.

Beispiel: Ein threadsicherer Singleton mit boost :: thread call_once.

Beispiel: Konfigurationsdatei von key: value mit Tokenizer lesen.

Sardathrion - Setzen Sie Monica wieder ein
quelle