Eure boost-Library-Highlights



  • Was sind eure persönlichen Favoriten bei den Libraries von boost? http://www.boost.org/doc/libs/1_63_0/

    Meiner: boost::spirit "LL parser framework represents parsers directly as EBNF grammars in inlined C++." http://www.boost.org/doc/libs/1_63_0/libs/spirit/


  • Mod

    Ehrlich gesagt gar nichts mehr, alle wesentlichen Teile, für die Boost früher Pflicht war, sind inzwischen Standard geworden. Daher würde ich Boost gar nicht mehr als Must-have ansehen. Zwei, die ich noch einigermaßen häufig nutze:

    * Filesystem: Mit Dateien und Dateisystemen arbeitet man ja doch recht oft. Und das minimale Maschinenmodell von C++ bietet da einfach zu wenig.
    * Preprocessor: Eher als Referenz, was alles möglich ist, als dass ich es direkt benutze. Außerdem hauptsächlich wenn ich C mache, in C++ braucht man das eher nie.



    • algorithm : Da es immer noch so absolut grundlegende Sachen wie ein string::replace_all nicht in der Standardlibrary gibt.
    • filesystem : Extrem nützlich und auch gut zu bedienen.
    • lexical_cast : Streams sind da im Vergleich einfach nur umständlich.
    • date_time : Die std Lösung ist mMn einfach nur grausam.
    • math : Hauptsächlich für Konstanten... M_PI 👎.
    • multiprecision : Hab ich zwar noch nicht oft gebraucht, kann aber manchmal sehr praktisch sein.
    • odeint : Schnell, intuitiv und schöne Doku. Einfach gut.

    Das wären so meine Favoriten.



  • Wenn man alles was in C++17 dabei ist rausstreicht bleibt wirklich nicht sehr viel übrig.
    Also nix was ich wirklich sehr häufig verwenden würde.
    Hin und wieder gibt's einiges. intrusive_ptr (speziell für COM Zeugs), ptr_vector, lexical_cast, Multi-Index, String-Algorithm, Boost.Format ...



  • Ich muss gestehen, ich habe sie mir nur mal angeschaut und dann mir mal zeitfressende Funktionen herausgesucht, die boost vielleicht schneller kann.

    Hängen geblieben bin ich dann als Test bei sqrt(), da dies bei meinen Sachen enorm viel CPU frisst.

    Herausgekommen ist, dass der Unterschied zum C++ Standard ernüchternd gering ausfällt, insbesondere, wenn man nicht die Präzission bis auf die letzte Stelle braucht. Da sind Dinge wie der Inverse Square Root um längen schneller. Leider scheint da Boost auch keine flotte Alternative anzubieten, wenn man mit weniger als 100% Genauigkeit arbeiten kann und möchte.

    Ab da hab ich dann schon aufgehört, mir boost anzuschauen. Aber vielleicht ändert sich das ja doch noch mal.



  • Was ich nutze:

    * program_options (eigentlich immer)
    * algorithm/string (eigentlich immer, bemühe mich aber oft, durch vorgeschaltete Perl-Scripts so wenig wie möglich String-Verarbeitung in C++ zu machen)
    * lexical_cast (weil stoi mir viel zu lasch ist)
    * filesystem (meist für parent path oder canonicalization)

    Habe ein paar mal accumulators benutzt. Allerdigs finde ich die sehr umständlich zu bedienen, sodass ich dann doch bei einer eigenen Klasse gelandet bin (bin zu blöd, z.B. einen abfallenden Durchschnitt in accumulators zu implementieren, während das selbst gemacht ziemlich leicht ist).



  • wob schrieb:

    * program_options (eigentlich immer)

    Weißt du zufälligerweise, wie man program_options benutzt, ohne es kompilieren zu müssen und ohne danach etwas linken zu müssen? Ich bin gerade auf der Suche nach einer guten Header-only Programm-Parameter-Parsing-Library.



  • Weißt du zufälligerweise, wie man program_options benutzt, ohne es kompilieren zu müssen und ohne danach etwas linken zu müssen?

    Das geht nicht.


Anmelden zum Antworten