2014-02-01から1ヶ月間の記事一覧
アルゴリズムより同名のメンバ関数を優先して使おう 連想コンテナのcountやfind、listのremoveなど、アルゴリズムと同名のメンバ関数があるときは、メンバ関数を使うべきです。 理由は、メンバ関数のほうが高速であることと、コンテナとの結びつきが緊密であ…
独自に作成したループよりアルゴリズムの呼び出しを優先して使おう アルゴリズムはループより効率的で、エラーが発生しづらく、単純明快でわかりやすいことが多いです。 なので、独自に作成したループよりアルゴリズムの呼び出しを優先して使うべきです。
lessがoperator less<T>は、Tのoperator<を呼び出します。 less<T>の動作を変えると、最小意外性の原則に反するので、動作を変えてはいけません。
ptr_fun、mem_fun、およびmem_fun_refの使用理由を理解しよう
ファンクタクラスを変換可能にしよう 関数アダプタを使うときには、4つのtypedef(argment_type, first_argment_type, second_argment_type, result_type)が必要です。 ファンクタクラスを関数アダプタに渡すときは、そのクラスをunary_functionかbinary_func…
述語を純粋関数にしよう
値渡し用のファンクタクラスを設計しよう
範囲に関する要約情報を取得するには、accumulateまたはfor_eachを使おう
copy_ifの正しい実装について理解しよう
mismatchまたはlexicographical_compareを使って、大文字小文字を区別しない単純な文字列比較を実装しよう この項のまとめは省略します。
ソート済み範囲を必要とするアルゴリズムに注意しよう
ポインタのコンテナには注意してremove風アルゴリズムを使おう 生のポインターのコンテナにremove風アルゴリズムを使うと、リソースリークが起こります。 スマートポインタのコンテナを生のポインターのコンテナの代わりに使えば、リソースリークを防げます。
本当に削除したい場合は、remove風アルゴリズムのあとにeraseを使おう
ソートの選択肢を知っておこう
出力先範囲の大きさを確認しよう
1文字ごとの入力にはistreambuf_iteratorの使用を考えよう
reverse_iteratorの基底iteratorの使い方を理解しよう
コンテナのconst_iteratorをiteratorに変換するには、distanceとadvanceを使う
const_iterator、reverse_iterator、const_reverse_iteratorよりiteratorを優先的に使おう insertとeraseは常にiteratorを必要とします。必要がない限り、わざわざconst_iteratorやreverse_iterator、const_reverse_iteratorを使う必要はありません。
標準以外のハッシュコンテナに慣れよう 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の実装にも目を向ける必…