標準以外のハッシュコンテナに慣れよう STLには、ハッシュコンテナがありません。(C++11では、unordered_set, unordered_multiset, unordered_map, unordered_multimapが追加されました。) SGI STLやSTLportにはハッシュコンテナが用意されています。
効率を重視するときは、map::operator[]とmap::insertの選択に注意しよう
連想コンテナをソート済みvectorに置き換えることを考えようソート済みvectorが連想コンテナより優れている点は、メモリ使用量が少ないことと参照の空間的局所性が高いことです。 欠点は、常にvectorをソート済みにしておかなくてはならないということです。…
setとmultisetのキーのインプレース変更を避けよう
等しい値に対して比較関数が常にfalseを返すようにしよう
ポインタの連想コンテナに対する比較の種類を指定しよう
等価と等値の違いを理解しよう
vector<bool>は使わないようにしよう
余分な容量を取り除くには、swap技法を使おう 余分な容量(コンテナが確保しているメモリ容量)を取り除くには、下のように書きます。 vector<type>(v).swap(v); まず、"vector(v)"でvectorの一時オブジェクトを作成します。 このコピーコンストラクタで作られた一時</type>…
vectorとstringのデータをレガシーAPIに渡す方法を学ぼう
stringの実装の違いに注意しよう stringの実装は、処理系ごとに異なります。参照カウントの有無やstringオブジェクトの大きさの違いなどです。 charの配列よりstringを使うべきですが、高いパフォーマンスが要求される場合は、stringの実装にも目を向ける必…
reserveを使って不必要な割り当てを避けよう
動的に割り当てられる配列よりvectorとstringを優先して使おう
STLコンテナのスレッドセーフティに関して現実的な見込みを持とう STLは完全なスレッドセーフではないので、セーフティにするには自分で制御する必要があります。
カスタムアロケータの正しい使い方を理解しようカスタムアロケータは、コンテナが要素を確保する方法を定義します。 領域確保時、NULLを返したり例外を発生させるなどした時の対策をしておく必要があります。
アロケータの規則と制限に注意しよう カスタムアロケータを作るときの注意点です。
消去オプションは注意して選択しよう
auto_ptr型のコンテナを作成することはやめよう
Efficient C++ 12章から16章の簡単なまとめです。
Efficient C++ 11章の簡単なまとめです。
Efficient C++ 8章から10章の簡単なまとめです。
newしたポインタのコンテナを使うときは、必ずポインタをdeleteした後にコンテナを破棄しよう
C++で最も奇妙な解析に注意しよう
単一要素メンバ関数より範囲メンバ関数を使おう
size()で0を調べる代わりにemptyを呼びだそう一部の実装では、listのsizeが線形時間の処理になっているそうです。 なので、コンテナが空であるかどうかを調べるにはemptyを使うようにします。
コンテナのオブジェクトを正しく効率的にコピーしよう コンテナにオブジェクトを追加するとき、オブジェクトのコピーが発生します。 コピーにはコストがかかりますし、基本クラスのコンテナに派生クラスのオブジェクトをコピーすると派生部分が切り落とされ…
コンテナに依存しないコードという幻想に注意しよう
コンテナは注意して選択しようタイトルがすべて、目的にあったコンテナを選ぶべきです。参考書籍Effective STL―STLを効果的に使いこなす50の鉄則作者: スコットメイヤーズ,Scott Meyers,細谷昭出版社/メーカー: ピアソンエデュケーション発売日: 2002/01メデ…
Efficient C++ 6章と7章の簡単なまとめです。
Efficient C++ 1章から5章の簡単なまとめです。