Effective STL

Effective STL をぼちぼち読んでいます。
むちゃくちゃ勉強になるなぁ。
2章まで読んだところですが、知らなかったこといっぱいでした。


記憶の整理を兼ねて一部をまとめておきます。

  • template内で依存型(T::const_iterator とか)を使うときは、typenameで宣言する必要がある。
  • list<Hoge>::size() は定数時間が保証されていない。
  • 範囲メンバ関数使おう
    • constructor, insert, erase, assign
  • Hoge hoge(); ←関数宣言
  • COAP(Containers of auto_ptr) 禁止
  • erase & remove 複合技 → sc.erase(remove(sc.begin(), sc.end(), v), sc.end());
    • std::remove の挙動に注意。要素を移動させるだけ。
  • SeqContainer::erase(iterator loc)
    • 消去される要素以降の反復子を全て無効にする
    • 消去される要素の次を指す有効な反復子を返す
    • i = c.erase(i);
  • AssocContainer::erase(iterator loc)
    • 消去される要素を指す反復子を全て無効にする
    • 戻り値はvoid
    • c.erase(i++);
  • string は参照カウントを使った実装が多い
  • size(), resize() / capacity(), reserve()
  • vectorを配列として渡す
    • &v[0]  // unless v.empty()
    • fで書き込みを行い、サイズが変わる可能性がある場合 → v.resize(f(&v[0], v.size()));
  • swap技法
    • Container(c).swap(c);
  • vector<bool> は各要素を1ビットで管理するが、要素へのポインタや参照を返せない
    • deque<bool> / bitset を使おう


Effective STL―STLを効果的に使いこなす50の鉄則

Effective STL―STLを効果的に使いこなす50の鉄則

  • 作者: スコットメイヤーズ,Scott Meyers,細谷昭
  • 出版社/メーカー: ピアソンエデュケーション
  • 発売日: 2002/01
  • メディア: 単行本
  • 購入: 9人 クリック: 155回
  • この商品を含むブログ (95件) を見る