タグ

C++と配列に関するiwwのブックマーク (8)

  • map::at - cpprefjp C++日本語リファレンス

    T& at(const key_type& x); const T& at(const key_type & x) const; 概要 指定したキーを持つ要素を取得する。 要素を取り出す際にキーの存在チェックをする。 戻り値 キーxに対応する値を返す。対応する要素が存在しないときは、out_of_range例外を投げる。 計算量 要素数に対して対数時間 例 #include <iostream> #include <map> #include <stdexcept> template<class Container, class T> void at_wrap(Container& c, T v) { try { std::cout << c.at(v) << std::endl; } catch(std::out_of_range&) { std::cout << "exception

  • mapでキーの有無を調べるには、find()よりcount()が便利 - minus9d's diary

    mapコンテナ(mとする)でキーの有無を調べる場合、今まではメンバ関数のm.find()を呼ぶ方法を使っていた。m.find()を使う方法では、「m.find()の戻り値がm.end()に等しければキーが存在しない、そうでなければキーが存在する」としてキーの有無を判別していた。 しかし、m.count()を使った方がより直感的である。m.count()を使う方法では、「m.count()の戻り値が0に等しければキーが存在しない、1に等しければキーが存在する」という簡単仕様なので分かりやすい。 以下のコードでは、find()を使う場合とcount()を使う場合とを比較した。どちらも結果は同じである。 #include <iostream> #include <map> using namespace std; bool has_key_using_find(map<int, string>

    mapでキーの有無を調べるには、find()よりcount()が便利 - minus9d's diary
  • Google Sites: Sign-in

    Not your computer? Use a private browsing window to sign in. Learn more about using Guest mode

    iww
    iww 2012/07/27
    multi_index_container
  • 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のサービスをご愛顧くださいますよう、よろしくお願いいたします。

  • 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」を取り除きたいとして、次のようなコードを書きました:

  • Codian - ポインタと文字列とCStringと

    更新日: 2007/11/19 動作確認環境:Windows XP Professional SP2, Visual C++ 6.0 Professional SP6 サンプルプロジェクト(Visual C++ 6.0): MxA09_VC6.zip サンプルプロジェクト(Visual C++ 6.0用、サンプルプログラム13のみ): MxA09_Unicode_VC6.zip 最後は文字列についてです。 MFCにはとても便利なCStringクラスがありますが、それをどう使えばいいのか、やや遠回り気味に説明したいと思います。 ちなみに文字列やポインタについては、Codianの「ポインタ」でも解説していますのでそちらもどうぞ。 C/C++言語の文字列型 なんてものは存在しません!! Visual Basic他、多くの言語は簡単に文字列を操作できる「文字列型」を持っていますが、C/C++言語に

    iww
    iww 2010/06/15
    恋しさとせつなさと心強さと
  • 1