タグ

STLに関するrin51のブックマーク (4)

  • More C++ Idioms/空にして最小化(Clear-and-minimize) - Wikibooks

    [編集] 意図[編集] コンテナを空にし容量を最小化する。 別名[編集] 動機[編集] STL のコンテナはしばしば、実際の要素数よりも多いメモリを確保する。 その結果、コンテナのサイズが拡大するときのメモリ確保を抑えることによる 最適化がもたらされる。 一方、コンテナのサイズが減少した時には、しばしば余分な容量が残る。 コンテナの余分な容量は、メモリリソースの不要な消費になりうる。 空にして最小化(Clear-and-minimize)イディオムは、コンテナを空にして余分な容量を 0 あるいは最小限必要な容量に切り詰め、メモリリソースの消費を抑えるために開発された。 解法とサンプルコード[編集] 空にして最小化(Clear-and-minimize)イディオムは、下記で示されているように単純である。 std::vector <int> v; //... たくさんの push_back と

  • std::vectorのメモリ解放

    2009年の抱負は、ダイエットと質素倹約である。 ダイエットは早くも挫折しそうだが、質素倹約はいい感じである。 今のペースだと給与の3/4は貯蓄できそうだ。 抱負の追加として、この日記を一日一回更新にしようと思う。 以前は携帯電話のプログラムだったので、それなりにいろいろ書けたが 今はPSPをやっているので、まったく日記を書くことができない。 でも、日記は書きたいので、プログラムに関する些細なことを毎日書いていこう。 vecotrで確保したメモリは、clearメソッドを呼んでも解放されず デストラクタが来るまではずっとメモリを確保している。 そこで、以下の方法で解放することができる。 std::vector<int> hoge; // hogeのresizeとclearを繰り返す。 // 解放 std::vector<int>().swap(hoge); 一時オブジェクトを作成し、そのオブ

    std::vectorのメモリ解放
  • C++: 構造体を格納したSTLコンテナに対してソート・探索・削除などのアルゴリズムを適用する

    C++に慣れている人にとっては当たり前のことかもしれないけど、あまりC++に親しんでいない場合、構造体を格納したSTLコンテナに対してアルゴリズム<algorithm>を有効に活用していないかもしれない。そこで、構造体を格納したvectorなどのSTLコンテナでソートや探索、削除などのアルゴリズムの利用方法を書いておく。 struct A { int n; int* p; }; 上記のような構造体はよく見かける形だと思う。構造体Aに整数型変数のnとポインタ型変数のpがあり、例えばnに配列の要素数、pにその配列を確保したりする。こういった構造体を以下のようにvectorなどのSTLコンテナを使って格納することは多々ある。 vector<A> A_list; これで構造体Aをコンテナに格納できるわけだ。ところで、STLコンテナを使用する一つの理由として便利なアルゴリズムが利用できることが挙げら

  • Standard Template Library プログラミング on the Web

    1985年、AT&TのBjarne StroustrupがC++をこの世に送り出しました。その後C++は様々な拡張を繰り返しながら進化してきました。 1991年、ISOはC++の国際標準(standard C++)を定める作業を開始しました。標準C++の最終草案は1997年にISO C++標準化委員会に承認されました。 標準C++が規定するのは言語仕様だけなく、C++標準ライブラリも規格の中で明確に定められています。それまでC++のライブラリといえばiostreamぐらいのものでしたし、それもあくまで"事実上の標準"でしかありませんでした。 そしてそのC++標準ライブラリの一部として組み入れられたのがSTL(Standard Template Library)です。すなわちSTLは標準C++の仕様の一部ということです。 僕がSTLを知ったのは1995年、いくつかのコンパイラがtemplat

    rin51
    rin51 2009/09/29
  • 1