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!
Antworten:
Wenn Sie einen Pre-TR1-Compiler verwenden, verwenden Sie intelligente Zeiger
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.
quelle
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.
quelle
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.
quelle