Frage

Seit ich diese Website benutzte, höre ich immer wieder von der Boost -Bibliothek. Ich frage mich, was einige der Hauptvorteile der Boost -Bibliothek sind (daher sollte ich sie verwenden) und wie tragbar ist die Boost -Bibliothek?

War es hilfreich?

Lösung

Boost wird von mehreren Mitgliedern des Standardausschusses organisiert.
Es ist also eine Brutfläche für Bibliotheken, die sich im nächsten Standard befinden.

  1. Es ist eine Erweiterung des STL (sie füllt die ausgelassenen Bits aus)
  2. Es ist gut dokumentiert.
  3. Es ist gut überprüft.
  4. Es hat eine hohe Aktivität, sodass Fehler gefunden und schnell fixiert werden.
  5. Es ist plattform neutral und funktioniert überall.
  6. Es ist frei zu verwenden.

Mit TR1 ist es schön zu wissen, dass Boost bereits einen Großteil des Bodens bedeckt hat. Viele der Bibliotheken in TR1 sind im Grunde genommen direkt aus Boost Originals angepasst und wurden somit getestet. Der Unterschied besteht darin, dass sie in den std :: tr1 -Namespace (anstatt Boost) verschoben wurden.

Alles, was Sie tun müssen Suchpfad einschließen:

<boost-install-path>/boost/tr1/tr1

Wenn Sie dann den Standard -Header -Boost einfügen, importieren Sie automatisch alle erforderlichen Dinge in den Namespace STD :: TR1

Zum Beispiel:

Um STD :: TR1 :: Share_Ptr zu verwenden, müssen Sie nur einschließenu003Cmemory> . Dadurch erhalten Sie alle intelligenten Zeiger mit einer Datei.

Andere Tipps

Sie können einfach das lesen Steigern Sie die Hintergrundinformationen Seite, um einen kurzen Überblick darüber zu erhalten, warum Sie Boost verwenden sollten und wofür Sie ihn verwenden können. Die wenigen Minuten wert.

99% tragbar.

Ich würde sagen, dass es einige Bibliotheken gibt, die wirklich nützlich sind, wenn Sie ein Bedürfnis entdecken, das durch Boost gelöst wird. Entweder codieren Sie es selbst oder verwenden eine sehr solide Bibliothek. Es ist erstaunlich, dass es erstaunlich ist, aus der Regal-Quelle für Sachen wie Multi-Index, Lambda, Programmoptionen, Regex, SmartPtr und Tuple zu haben ...

Das Beste ist, einige Zeit damit zu verbringen, die Dokumentation für die verschiedenen Bibliotheken zu durchlaufen und zu bewerten, ob es für Sie von Nutzen sein könnte.

Würdig!!

Sie bekommen viele Dinge, die in C ++ 0x kommen. Aber abgesehen von dieser Allgemeinheit sind einige der besseren Einzelheiten einfach Regex -Bibliothek, eine Casting -Bibliothek für Gießen von Saiten zu INTs (Lexikalische Besetzung):

int iResult = 0;
try
{
    iResult = lexical_cast<int>("4");
}
catch(bad_lexical_cast &)
{
    cout << "Unable to cast string to int";
}

EIN Datums-/Zeitbibliothek, unter anderen...

using namespace boost::gregorian;
date weekstart(2002,Feb,1);
date thursday_next = next_weekday(weekstart, Thursday); // following Thursday

Es gibt auch ein Python -Schnittstelle (Boost Python), a Lexer/Parser DSL (Boost Spirit):

// A grammar in C++ for equations
group       = '(' >> expression >> ')';
factor      = integer | group;
term        = factor >> *(('*' >> factor) | ('/' >> factor));
expression  = term >> *(('+' >> term) | ('-' >> term));

Und das kratzt nur die Oberfläche ...

Boost ist großartig, aber nur für den Anwalt des Teufels hier sind einige Gründe, warum Sie möglicherweise keinen Boost verwenden möchten:

  • Kompiliert/funktioniert manchmal nicht ordnungsgemäß auf alten Compilern.
  • Es erhöht oft die Kompilierzeiten mehr als weniger vorlagenlastige Ansätze.
  • Einige Boost -Code tun möglicherweise nicht das, was Sie denken, dass dies der Fall ist. Lesen Sie die Dokumentation!
  • Vorlagenmissbrauch kann zu unlesbaren Fehlermeldungen führen.
  • Vorlagenmissbrauch kann dazu führen, dass Code im Debugger schwer zu durchlaufen kann.
  • Es ist Blutungskante C ++. Die nächste Version von Boost kann nicht mehr auf Ihrem aktuellen (älteren) Compiler kompiliert werden.

All dies bedeutet nicht, dass Sie sich den Boost -Code nicht ansehen und selbst einige Ideen erhalten sollten, selbst wenn Sie Boost nicht so verwenden.

Boost ist eine Sammlung von C ++ - Bibliotheken. 10 davon werden in TR1 von C ++ 0x enthalten.

Du kannst Beginnen Sie hier mit Boost.

Schub ist eine Sammlung hochwertiger C ++ - Bibliotheken mit Peer -Reviews, die den Schwerpunkt auf Portabilität und Richtigkeit legen. Es fungiert als Defacto -Beweisgründe für neue Ergänzungen der Sprache und in der Standardbibliothek. Weitere Informationen finden Sie auf der Website.

Die Vorteile von Boost: Es ist weit verbreitet, portiert auf einen modernen C ++ - Compiler oder über jede Plattform.
Die Funktionen sind Plattformunabhängige, Sie müssen für jedes neue Framework kein neues Thread -Design lernen.
Es verkauft viele Plattfom -spezifische Funktionen, wie Dateisysteme auf Standard -Weise.

Es ist das, womit C ++ hätte versenden sollen! Viele Popularität von Java war, dass er mit einer Standardbibliothek versandt wird, um viel alles zu tun, was Sie wollten. C ++ erbte leider nur die begrenzten C/UNIX -Standardfunktionen.

shared_ptr und weak_ptr, Besonders im Multithread -Code sind es allein wert, Boost zu installieren. BOOST_STATIC_ASSERT ist auch ziemlich cool für die Logiküberprüfung der Kompilierung.

Die Tatsache, dass viele der Klassen und Dienstprogramme in Boost in den Kopfzeilen enthalten sind, was bedeutet, dass Sie viel Funktionalität erhalten können, ohne überhaupt etwas kompilieren zu müssen, ist ebenfalls ein Plus. Die Portabilität ist normalerweise kein Problem, es sei denn, Sie verwenden einen extrem alten Compiler. Ich habe einmal versucht, MPL mit VC6 zu arbeiten, und es druckte 40.000 Warnungen/interne Fehler aus, bevor ich vollständig explodierte. Im Allgemeinen sollte der größte Teil der Bibliothek unabhängig von Ihrer Plattform oder Ihrem Compiler -Anbieter funktionieren.

Berücksichtigen Sie die Tatsache, dass einige Dinge aus Boost bereits in TR1 sind und höchstwahrscheinlich in der nächsten Überarbeitung der C ++ - Standardbibliothek sein werden. Das ist eine ziemlich große Bestätigung.

Boost ist eine sehr umfangreiche Bibliothek von (normalerweise) generischen Konstrukten, die in fast jeder Anwendung helfen können. Dies kann durch die Tatsache gezeigt werden, dass viele Boost -Komponenten in die C ++ 0x -Spezifikationen aufgenommen wurden.

Es ist auch mindestens die wichtigsten Plattformen tragbar und sollte für fast alles tragbar sein, wobei meist Standards C ++ - Compiler ist.

Die einzige Warnung ist, dass zwischen Boost -Bibliotheken viele vermischte Abhängigkeiten vorhanden sein können, sodass es schwieriger wird, eine bestimmte Komponente auszuwählen (außer der gesamten Boost -Bibliothek).

All das und es fördert viele moderne C ++-Techniken mit modernen Praxis. Es verbessert die Qualität Ihres Codes.

Beachten Sie auch den größten Teil des Boost -Vorlagen
(Fügen Sie einfach die richtigen Header -Dateien hinzu).

Die wenigen Teile, die Gebäude erfordern, sind optional:
Diese können jeweils unabhängig gebaut werden, wodurch unnötiges Aufblähen für nicht benötigten Code verhindern wird.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top