web-dev-qa-db-ja.com

C ++ Boostライブラリを使用する利点は何ですか?

だから、私は読んでいますが、Boostライブラリは実際に多く使用されているようです(ただし、私の店ではそうではありません)。どうしてこれなの?そして何がそんなに素晴らしいのですか?

116
jdt141

Boost は、次の理由で非常に広く使用されています。

  • オープンソースであり、ピアレビューされています。
  • これは、STLが見逃したプラットフォームに依存しない機能の 広範囲 を提供します。
  • これは、置き換えではなくSTLを補完するものです。
  • Boost開発者の多くはC++標準委員会にいます。実際、Boostの多くの部分は次のC++標準ライブラリに含まれていると考えられています。
  • うまく文書化されています。
  • その license は、オープンソースおよびクローズドソースのプロジェクトに含めることができます。
  • その機能は通常相互に依存していませんので、必要な部分だけをリンクできます。 [ Luc Hermitte のコメント]
125
blackwing

ホームページから:

「...世界で最も高く評価され、専門的に設計されたC++ライブラリプロジェクトの1つ。」 — Herb SutterおよびAndrei Alexandrescu、C++コーディング標準

「アイテム55:Boostに慣れる」。 — Scott Meyers、Effective C++、第3版.

「ほとんどのプログラマにとって明らかな解決策は、必要なサービスに依存しないエレガントで効率的なプラットフォームを提供するライブラリを使用することです。例はBOOSTです...」— Bjarne Stroustrup、抽象、ライブラリ、C++の効率

それで、広く使われ、受け入れられているライブラリの範囲ですが、なぜそれが必要なのでしょうか?

必要な場合:

  • 正規表現
  • 関数バインディング
  • ラムダ関数
  • 単体テスト
  • スマートポインタ
  • コピー不可、オプション
  • 連載
  • 一般的な日付
  • ポータブルファイルシステム
  • 循環バッファ
  • 構成ユーティリティ
  • 汎用画像ライブラリ
  • TR1
  • スレッド
  • uBLAS

および more C++でコーディングする場合は、 Boost をご覧ください。

37

それらは多くの不足しているものを標準ライブラリに追加するので、それらのいくつかは標準に含まれるようになります。

ブースト 嘘をついていません:

組織でBoostを使用する理由

一言で言えば、生産性。 Boostのような高品質のライブラリを使用すると、初期開発が高速化され、バグが減少し、車輪の再発明が減り、長期的なメンテナンスコストが削減されます。また、Boostライブラリーは事実上の標準またはデジュールな標準になる傾向があるため、多くのプログラマーは既にそれらに精通しています。

Boostライブラリの10個は、C++標準ライブラリのTR1に含まれているため、後で完全に標準化する予定です。さらに多くのBoostライブラリがTR2のパイプラインにあります。 Boostライブラリを使用すると、組織は新しいテクノロジーを採用する際の有利なスタートを切ることができます。

多くの組織は、Adobe Acrobat Reader 7.0などのBoostで実装されたプログラムをすでに使用しています。

23
Vinko Vrsalovic

いくつかのBoostクラスは非常に便利です(shared_ptr)が、Boostの特性と概念に少々気を配ったと思います。コンパイル時間と巨大なバイナリサイズは、テンプレートを大量に使用するコードの場合のように、Boostで完全に狂っています。バランスが必要です。 Boostがそれを見つけたかどうかはわかりません。

14
jeramiah

C++プログラミングへのより現代的なアプローチを可能にするライブラリを追加します。

私の経験では、多くのC++プログラマーは実際には1990年代前半のC++プログラマーであり、C++クラスをほとんど書いていますが、ジェネリックはあまり使いません。より現代的なアプローチでは、ジェネリックを使用して、動的言語に似た方法でソフトウェアを構成しますが、最終的には型チェック/パフォーマンスが得られます。見るのは少しいです。しかし、構文の問題を乗り越えると、本当にすてきです。 Boostは、ものを簡単に作成するために必要な多くのツールを提供します。スマートポインター、関数、ラムダ、バインディングなど。その後、ネットワーク、正規表現などのようなものを提供するために、C++を記述するこの新しい方法を活用するブーストライブラリがあります。

多数のforループを書いたり、関数オブジェクトを手でローリングしたり、メモリ管理を行っている場合は、間違いなくブーストアウトをチェックする必要があります。

8
Keith Nicholas

BOOSTは、多くのC++プロジェクトに共通するニーズを満たすライブラリのコレクションです。一般的に、BOOST実装コードの読みやすさ、またはコンパイル時間よりも、正確性、再利用性、移植性、実行時パフォーマンス、およびスペース効率を優先します。それらは、完全な高レベルの機能要件(アプリケーションフレームワークなど)をカバーしない傾向があり、代わりに(ありがたいことに)アプリケーション設計を決定または支配することなく、より自由に組み合わせることができるビルディングブロックを提供します。

BOOSTの使用を検討する重要な理由は次のとおりです。

  • ほとんどのライブラリは、十分にテストおよび設計されています。一般に、同じ問題空間で自作のソリューションを使用し、広範な実世界のフィードバックを収集するのに十分に広く使用されている人々と比べて、
  • それはすでに書かれており、おそらくあなたのソリューションはそうではありません
  • 可搬性が非常に高い(ただし、ライブラリごとに異なる)
  • c ++コミュニティのより多くの人々が、あなたのコードを支援する上で有利なスタートを切るでしょう。
  • BOOSTは多くの場合、C++標準を導入するための証明の場であるため、コードを書き直して将来の標準と互換性を持たせるための作業が少なくなります。
  • コミュニティの需要により、コンパイラベンダーは、BOOSTの使用に関する正確性の問題をテストし、対応する可能性が高くなります。
  • ブーストライブラリに精通していると、他のプロジェクト(おそらく他の企業)で同様の作業を行うのに役立ちます。この場合、現在記述しているコードは再利用できません。

ライブラリは、ここで1行または2行で説明されています: http://www.boost.org/doc/libs/

8
Tony Delroy

C++標準ライブラリだけではありませんcomplete

6
Hans Sjunnesson

Kevlin Henney の関与があるものはすべて注意してください。

5
Umber Ferrule

Boostは、C++に対するもので、.NET FrameworkがC#に対するものと似ていますが、おそらく小規模です。

3
macbirdie

基本的には、標準がどうなるかの概要をブーストします。また、Boostが取得するすべてのピアレビューと使用法に加えて、依存関係についてかなり多くのことを得ることができます。

ただし、ほとんどのショップは、外部依存関係であるため、Boostを使用しません。実際には、外部依存関係を減らすことも非常に重要です。

3
Robert Gould

ファイルシステムライブラリを使用して少しやめて、boost :: shared_ptrはかなり気の利いたものです。他のこともしているそうです。

2
Terry G Lorber