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です。オブジェクトの文字列との変換を行います(そのタイプに適切な<<および>>演算子が定義されている限り)。デバッグ時のエラーメッセージのダンプに非常に便利です。