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