Vorteile und Portabilität der Boost-Bibliothek [closed]

Lesezeit: 5 Minuten

Benutzer-Avatar
Matt Pascoe

Seit ich diese Seite benutze, höre ich immer wieder von der Boost-Bibliothek. Ich frage mich, was einige der Hauptvorteile der Boost-Bibliothek sind (warum sollte ich sie also verwenden) und wie portabel ist die Boost-Bibliothek?

Benutzer-Avatar
Martin York

Boost wird von mehreren Mitgliedern des Standardausschusses organisiert.
Es ist also ein Nährboden für Bibliotheken, die im nächsten Standard enthalten sein werden.

  1. Es ist eine Erweiterung der STL (es füllt die ausgelassenen Bits aus)
  2. Es ist gut dokumentiert.
  3. Es ist gut von Experten begutachtet.
  4. Es hat eine hohe Aktivität, sodass Fehler schnell gefunden und behoben werden.
  5. Es ist plattformneutral und funktioniert überall.
  6. Die Nutzung ist kostenlos.

Da bald tr1 erscheint, ist es schön zu wissen, dass Boost bereits einen Großteil des Bodens abgedeckt hat. Viele der Bibliotheken in tr1 sind im Grunde direkt von Boost-Originalen übernommen und somit erprobt und erprobt. Der Unterschied besteht darin, dass sie in den Namensraum std::tr1 verschoben wurden (und nicht in boost).

Alles, was Sie tun müssen, ist Folgendes zu Ihrem Compiler-Standard hinzuzufügen Suchpfad einschließen:

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

Wenn Sie dann die Standard-Header einfügen, importiert Boost automatisch alle erforderlichen Inhalte in den Namespace std::tr1

Zum Beispiel:

Um std::tr1::share_ptr zu verwenden, müssen Sie nur einfügen. Dadurch erhalten Sie alle intelligenten Zeiger mit einer Datei.

Sie können die einfach lesen Boost Hintergrundinformationen Seite, um einen schnellen Überblick darüber zu erhalten, warum Sie Boost verwenden sollten und wofür Sie es verwenden können. Es lohnt sich die paar Minuten, die es dauert.

  • Ich bin erstaunt, dass der Autor dieser Frage nicht daran gedacht hat, dies zu lesen.

    – PP.

    17. November 2009 um 13:48 Uhr

  • Zu seiner Verteidigung ist es jetzt hier verfügbar und für jeden auf der Website durchsuchbar (und wahrscheinlich weit oben in den Google-Suchergebnissen).

    – Justin Ethier

    5. März 2010 um 3:50 Uhr

99 % tragbar.

Ich würde sagen, dass es einige Bibliotheken gibt, die wirklich nützlich sind, wenn Sie einen Bedarf entdecken, der durch Boost gelöst wird. Entweder Sie codieren es selbst oder Sie verwenden eine sehr solide Bibliothek. Es ist erstaunlich, Quellen für Dinge wie Multi-Index, Lambda, Programmoptionen, RegEx, SmartPtr und Tuple von der Stange zu haben …

Am besten verbringen Sie einige Zeit damit, die Dokumentation für die verschiedenen Bibliotheken durchzugehen und zu prüfen, ob sie für Sie von Nutzen sein könnte.

Würdig!!

  • Mehrere Teile von Boost scheiterten erst vor ein paar Jahren an den C++-Compilern von Sun und IBM. Ich bin mir über die Situation jetzt nicht sicher, aber ich würde die Portabilität nicht annähernd mit 99% bewerten.

    – Johannes Zwinck

    24. November 2008 um 1:03 Uhr

  • @john eine weitere positive Bewertung zu diesem Kommentar. Der Borland/CodeGear/Embarcadero-Compiler kann auch nicht mit vielen Teilen von Boost arbeiten.

    – Großwolf

    30. Dezember 2011 um 3:20 Uhr

Benutzer-Avatar
Jeroen Dirk

Boost ist großartig, aber nur Devil’s Advocate zu spielen, hier sind einige Gründe, warum Sie Boost möglicherweise nicht verwenden möchten:

  • Kann manchmal auf alten Compilern nicht richtig kompiliert/funktioniert werden.
  • Es erhöht oft die Kompilierungszeiten mehr als weniger vorlagenlastige Ansätze.
  • Einige Boost-Codes tun möglicherweise nicht das, was Sie denken. Lesen Sie die Dokumentation!
  • Vorlagenmissbrauch kann zu unlesbaren Fehlermeldungen führen.
  • Vorlagenmissbrauch kann dazu führen, dass Code im Debugger nur schwer durchschritten werden kann.
  • Es ist auf dem neuesten Stand von C++. Die nächste Version von Boost kann möglicherweise nicht mehr auf Ihrem aktuellen (älteren) Compiler kompiliert werden.

All dies bedeutet nicht, dass Sie sich den Boost-Code nicht ansehen und sich selbst ein paar Ideen holen sollten, auch wenn Sie Boost nicht so verwenden, wie es ist.

Benutzer-Avatar
Douglas Mayle

Sie erhalten viele Dinge, die in C++0x kommen. Aber abgesehen von dieser Allgemeinheit sind einige der besseren Besonderheiten eine einfache Regex-Bibliothek, eine Casting-Bibliothek für Umwandeln von Strings in Ints (Lexikalische Besetzung):

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

EIN Datum/Uhrzeit-Bibliothekunter 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 (Stärke den Geist):

// A grammar in C++ for equations
group       = '(' >> expression >> ')';
factor      = integer | group;
term        = factor >> *(('*' >> factor) | ("https://stackoverflow.com/" >> factor));
expression  = term >> *(('+' >> term) | ('-' >> term));

und das kratzt nur an der oberfläche…

  • Ich mag diese Antwort, da sie tatsächliche Anwendungsfälle von Boost zeigt

    – rluks

    22. Januar 2016 um 13:05 Uhr


Benutzer-Avatar
Brian R. Bondy

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

Sie können Beginnen Sie hier mit Boost.

  • Ich mag diese Antwort, da sie tatsächliche Anwendungsfälle von Boost zeigt

    – rluks

    22. Januar 2016 um 13:05 Uhr


Benutzer-Avatar
Lukas

Schub ist eine Sammlung hochwertiger Peer-Review-C++-Bibliotheken, die Wert auf Portabilität und Korrektheit legen. Es dient de facto als Testgelände für neue Ergänzungen der Sprache und der Standardbibliothek. Weitere Informationen finden Sie auf ihrer Website.

1012310cookie-checkVorteile und Portabilität der Boost-Bibliothek [closed]

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy