タグ

stlに関するadillaのブックマーク (3)

  • CSTL プロジェクト日本語トップページ - OSDN

    CSTLは、C言語で使えるC++のSTLライクなコンテナライブラリです。vector, deque, list, set, multiset, map, multimap, unordered_set, unordered_multiset, unordered_map, unordered_multimap, stringを提供します。

    CSTL プロジェクト日本語トップページ - OSDN
    adilla
    adilla 2012/12/10
  • std::map や std::vector で erase - Debuggin' Everyday

    By Yasunori Osana on April 9, 2008 12:30 AM | Permalink | Comments (0) | TrackBacks (0) 条件にマッチする要素を順に検索して削除すると、削除したときに iterator が無効になる。 vector なら、erase() が削除後に有効な次の要素への iterator を返してくれるので、 for (std::vector::iterator i = v.begin(); i != v.end(); ){ if ( condition ) i = v.erase(i); else i++; } map だと、iterator を返してくれないので、 for (std::map::iterator i = m.begin(); i != m.end(); ){ if (condition)

    adilla
    adilla 2011/01/23
    mapのシーケンシャルアクセス時の削除. i = v.erase(i++). なるほど
  • その12 イテレート中のSTLのlistから要素を安全に削除する方法

    ホーム < ゲームつくろー! < Programming TIPs編 その12 イテレート中のSTLのlistから要素を安全に削除する方法 STLのコンテナは「イテレータ」によって要素を取り出します。この時良くあるのが「ある要素をチェックして、必要が無くなった場合はリストから削除する」という作業です。例えば描画オブジェクトのリストからもういらなくなったオブジェクトを除く時などこの作業が必要になります。 イテレート中のリストから要素を除く場合、ちょっと注意しないと思わぬバグが誘発します。この章ではイテレート中のリストから要素を除く方法をまとめます。まさにTIPsです(^-^;。 ① まともにやるとあっさりバグ 例として、int型のリストに0~9までの要素がこの順番で登録されているとしましょう。このリストをイテレートして「5」を取り除きたいとして、次のようなコードを書きました:

    adilla
    adilla 2011/01/23
    stlのlistをシーケンシャルアクセスしながら,削除する方法
  • 1