タグ

STLに関するiwwのブックマーク (14)

  • C++ 両端キュー std::deque 入門

    両端キュー std::deque とは deque は double-ended-queue の略で「デック」と発音される。 deque は vector と同じ動的配列クラスで、末尾だけでなく先頭への要素追加・削除も O(1) と高速なクラスだぞ。 先頭への要素追加・削除もOKなので「両端キュー」とも呼ばれる。 用意されているメンバ関数も vector とほぼ同じで使い勝手もほぼ同じなので、先頭付近での挿入削除処理が多い場合は deque の使用を検討するといいぞ。 ただし、vector と違い、deque の要素は連続したアドレスに保存されているとは限らないので、要素のアドレスを取り出して、 それをポインタとして他の関数に渡すと問題が発生することがあるので、要注意だ。 また、先頭付近での挿入削除以外は、vector の方がパフォーマンスに優れるので、先頭付近での挿入削除を頻繁に行わない

    iww
    iww 2016/02/05
    max_size() は
  • STL Error Decryptor for C++

    STLFilt: An STL Error Message Decryptor for C++ Open Source Freeware by Leor Zolman, Supporting: Comeau C++ gcc 2.95.x/3.x/4.x (Dev-C++ compatible) MSVC++ 6/7/8/9 (incl. Dinkum Libraries) Metrowerks CodeWarrior Pro 7/8 Borland C++ / C++Builder Intel C++ 7/8 EDG Front End (Generic) Digital Mars C++ Please Note: Active Development on STLFilt has ended. The author sincerely hopes the C++ Standards Co

    iww
    iww 2013/03/01
    なるほどこれはおもしろそうだ。 便利そうだけどバージョンアップに細かくついていけてんのかな。 と思って試してみたけど、これはちょっとイマイチだな
  • CLX C++ Libraries - container_wrapper

    Declarations template <class Type, class Alloc = std::allocator<Type> > class vector_wrapper; template <class Type, class Alloc = std::allocator<Type> > class deque_wrapper; template <class Type, class Alloc = std::allocator<Type> > class list_wrapper; template < class Key, class Compare = std::less<Key>, class Alloc = std::allocator<Type> > > class set_wrapper; template < class Key, class Compare

    iww
    iww 2012/07/30
    『STL コンテナは継承される事を 想定して設計されていない』
  • C++0x 標準ライブラリ完全解説 〜 No.01 namespace rel_ops, <utility> - 銀天随筆集

    該当規格: 20.3.1 Operators [operators], N3225 http://sites.google.com/site/cpprefjp/reference/utility/rel_ops さて、それでは早速、具体的なライブラリに移っていこうと思います。 とはいえ、初回から飛ばすのもアレなので、まずは軽いものを、 というわけで、 の rel_ops を紹介したいと思います。 これは比較演算子の多重定義を助けるためのヘルパ関数群で、 で唯一、 C++98/03 から全く変化していないライブラリです。 定義 namespace std { namespace rel_ops { template <class T> bool operator!=( const T& x, const T& y ) { return !( x == y ); } template <cla

    C++0x 標準ライブラリ完全解説 〜 No.01 namespace rel_ops, <utility> - 銀天随筆集
  • STL マスター・ノート

    より詳しい解説ノートです。 基的な コンテナ/反復子/関数オブジェクト/アルゴリズム に的を 絞って詳しく解説しています。 stack/queue/priority_queue/bitset/string/rope/valarray/complex については、 また後日、STLプロフェッサー・ノートの方で詳しく解説します。 初歩的な説明は全部とっぱらっていますが、 それでもやっぱり見にくいです。 それから、SGI社のSTLについてはcompose辺りの説明が若干違います。 〔STL-コンテナ〕 ■コンテナ共通の項目 全てのコンテナクラスは、デフォルトコンストラクタ、コピーコンストラクタ、デストラクタを提供する。 また、要素の範囲を指定して初期化を出来る。 ◆コンストラクタによる初期化のサンプル 1) コンテナの要素から初期化をする std::list<int> l ; <省略> std

    iww
    iww 2012/07/28
    とてもわかりやすい良いページ。 でも色がきつい。
  • Containers

    A container is a holder object that stores a collection of other objects (its elements). They are implemented as class templates, which allows a great flexibility in the types supported as elements. The container manages the storage space for its elements and provides member functions to access them, either directly or through iterators (reference objects with similar properties to pointers). Cont

  • const_iterator - ルギア君の戯言

    まあ、なんでもいいんだけど、STL には const_iterator っていうのがあるよね。 あのに使い方が載っていないんだけど、昨日その存在意義が漸くわかったw 例えば、 using namespace std; set<map<string, int> > set1; set<map<string, int> >::iterator ps; map<string, int>::iterator pm; set1.insert(...); ... set1.insert(...); // データを登録する // 普通、iterator は for(ps = set1.begin(); ps != set2.end(); ps++) { for(pm = ps->begin(); pm != ps->end(); pm++) { cout << pm->first << ": " <<

    const_iterator - ルギア君の戯言
    iww
    iww 2012/07/13
  • json.h (jsonパーサ) - binzume.net

    C++用の簡易JSONパーサライブラリです.picojsonよりインターフェイスが簡単です.まだ出来が悪いので真面目に使うのはやめた方が良いと思います. 利用の制限はありません.各自の責任にて自由にご利用ください.ライセンス的にはNYSLということにします. 特徴 includeするだけで使えます STLだけあれば動きます 簡単・低機能 サンプル やる気ないサンプル. #include <iostream> #include "json.h" using namespace std; int main(int argc,int argv[]) { string s = "[1,null,[31 , 32, \"asdfg\\\"hjk\" , {\"hoge\" : -123e6 },123 ],null,5,0]"; json::jsvalue v; json::parse(v, s);

  • C++マニアック,STL,for_each の使い方

    このページでは STL のアルゴリズムである for_each の使い方について解説します。 for_each は単純な繰り返し クラスオブジェクトで for_each を使用する(その 1) 省略形の使用 メンバ関数に引数がある場合 for_each は単純な繰り返し ページの先頭へ for_each は、vector や set などのコンテナの要素に対する単純な繰り返しを行うためのテンプレート関数です。 注:コンテナではない普通の配列にも使えます。 for_each のプロトタイプ宣言は次のようになっています。 template <class T_InputIterator, class T_Function> T_Function for_each( T_InputIterator itBegin, T_InputIterator itEnd, T_Function functio

  • サービス終了のお知らせ

    サービス終了のお知らせ いつもYahoo! JAPANのサービスをご利用いただき誠にありがとうございます。 お客様がアクセスされたサービスは日までにサービスを終了いたしました。 今後ともYahoo! JAPANのサービスをご愛顧くださいますよう、よろしくお願いいたします。

  • Kazuho@Cybozu Labs: 今更 C++ で JSON パーサ「picojson」を書いたわけ

    既に mattn さんが、「Big Sky :: ヘッダファイルだけでC++から使えるJSONパーサ「picojson」が凄い!」で紹介してくださっています (mattn さん、アドバイス&バグ情報ありがとうございます!) が、いまさら C++ で JSON パーサを作りました。それは、以下の3点を満たすものがなかったから。 ヘッダファイル only boost 等、他の重たいライブラリに依存しない array や object が STL にマッピングされる コードは、coderepos に置いてありますので、よろしければお使いください (picojson.h)。 なお、現時点での制限事項として、 \n や \r, \uXXXX といったエスケープの処理が未実装rev. 34232 で対応しました (含サロゲートペア) 空白文字の判断基準が RFC と異なるrev. 34277 で空白と

    iww
    iww 2012/04/04
    テストがかっこいい
  • 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)

  • std::map - erase 時の iterator の無効化を防ぐ - yanaken@phper

    std::map を使用していると、 「ある条件を満たし(た|てない)要素を削除したい」 ってことがよくある。 そんな時はこんな感じにしてみる。 std::map<int, bool> hige; std::map<int, bool>::iterator it = hige.begin(); while (it != hige.end()) { if (it->second == true) { // ここがポイント hige.erase(it++); } else { ++it; } } [説明] std::map は要素を変更した場合に、以前まで保持していた iterator は無効になってしまう。 erase の戻り値も void なので何も期待できない。 だったら erase に渡す前の iterator を保持しちゃう。 std::map<int, bool>::iterato

    std::map - erase 時の iterator の無効化を防ぐ - yanaken@phper
  • その12 イテレート中のSTLのlistから要素を安全に削除する方法

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

  • 1