Boostライブラリの使用方法の学習を開始する場所


16

Boostは最近私が取り組んでいるプロジェクトで利用可能になりましたが、あまり経験がありません。ライブラリには非常に多くの部分と機能があるため、学習を始める場所を知るのは困難です-特に本番コードの作成中に学習しようとするので(だからあまり遅くなることはありません)。

誰かが一般的に、毎日のプログラミングで非常に役立つ3から5の機能をリストし、それらがなぜ役に立つのかを述べていただければ幸いです。それから私はそれらを学び始め、それらを使用することができます-それは少なくとも私に図書館で足場を与え、それを学び/それを適用し始める友好的な場所になります:)

前もって感謝します!


この文脈では、「図書館の足場」という言葉は理解できません。書籍の何が問題になっていますか?通常のベンダーの件名にはいくつかありますが、チームの本棚にそれらを置くことは必須です。
-aquaherd

私はプログラミングのためにいつも読んでいます-ブーストについての本や参考ガイドを読んで、それが持っているすべてのものを知り、今すぐ役立つかどうかを知る時間はありません。私はあちこちでそれを使い始め、作業中にゆっくり拾い上げたいと思います。そして、本当に便利なブーストコンポーネントのいくつかのコアの例を望みました。たとえば、Scott MeyersによるEffective C ++は、shared_ptrノンストップ(および他のほとんどない)について語っています。ブーストで他に異常に役立つものは何ですか?
ジョンハンフリーズ-11

私は個人的に、BOOST_FOREACHマクロ、オブザーバー/サブスクライバーパターン、正規表現、日付/時刻パーサー(ファセット)が大好きでしたが、コードを使用して既存のブーストを変更したり、DeadMGが概説したように偶然に遭遇しました。私はブーストである氷山の一角を引っ掻いただけですが、それはSTLの自然な継続のように感じました。
-aquaherd

回答:


8

TR1以前のコンパイラを使用している場合は、スマートポインター

boost::shared_ptr
boost::weak_ptr
boost::scoped_ptr 

boost::scoped_array
boost::shared_array

コンパイラに既にスマートポインターがある場合は、それらを使用します。
理由は、スマートポインターのないC ++は基本的にC ++ではないことです。

ブーストptr_contaierライブラリ。

すべてのSTLコンテナは、特にポインタを保持するために再実装されました。コンテナが破棄されると自動的にすべてのポインタが破棄されるように、コンテナはポインタの所有権を取得するだけではありません。しかし、それはまた、通常のオブジェクト参照(ポインタではない)などの要素へのアクセスを提供し、これは、それが簡単にラッパーファンクタなしで標準アルゴリズムでオブジェクトを使用することができます。

ブーストラムダライブラリ。(以下のコメントを参照)

STLファンクターとバインダーは、単純なものには問題ありません。ただし、boost :: lambdaは次のステップに進み、標準アルゴリズムを使用する場合に物事をはるかに簡単にします。

boost :: anyおよびboost :: variant

オブジェクトの正確なタイプを知りたくないときにオブジェクトを保持する必要がある場合。

マルチインデックスコンテナ

複数の異なる方法で要素にアクセスできるようにするコンテナ。
オブジェクトのベクトルとベクトルをすばやく検索するための別のマップがある時代は終わりました。これにより、コンテナに要素を挿入/削除するときに2つのコンテナを維持するために記述する必要のある定型文が削減されます。

boost :: lexical_cast

おそらく実際の生活ではあまり役に立たないかもしれませんが、遊ぶのがとても楽しいのはboost :: lexical_castです。オブジェクトの文字列との変換を行います(そのタイプに適切な<<および>>演算子が定義されている限り)。デバッグ時のエラーメッセージのダンプに非常に便利です。


1
Boost.Phoenixは正式にBoost.Lambdaに取って代わりましたが、現在は非推奨と見なされています。新しいコードには、後者よりも前者をお勧めします。:-]
ildjarn

16

Boostはフレームワークでもライブラリでもありません。これは、品質管理された、査読済みのライブラリコレクションです。Boostを学習しません。ライブラリは個別です。何かが必要な場合は、Boostにあるかどうかを確認し、Boostにある場合はそのライブラリを学習します。それでおしまい。boost :: variantを把握することからboost :: optionalを把握することはできません。


4
ブーストは品質ラベルであり、配布セットであると言えます。
クライム

1

Boostはライブラリのコレクションです。次回コードカタを行うときは、役立つと思われるBoostのライブラリを選択して使用します。ドキュメントは非常に優れており、簡単な使用法を選択しても問題ないはずです。もっと巧妙なことをしようとすると、より複雑なものが現れます。

例:boost :: thread call_onceを使用したスレッドセーフシングルトン。

例:tokenizerを使用してkey:valueの構成ファイルを読み取ります。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.