タグ

C++に関するadillaのブックマーク (8)

  • Software optimization resources. C++ and assembly. Windows, Linux, BSD, Mac OS X

    See also my blog Contents Optimization manuals Vector class library Object file converter and disassembler Subroutine library ForwardCom: An open standard instruction set for high performance microprocessors Test programs for measuring clock cycles in C++ and assembly code Floating point exception tracking through NAN propagation CPUID manipulation program Links Optimization manuals This series of

  • 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をシーケンシャルアクセスしながら,削除する方法
  • C++マニアック,C++,const の使い方,usage of const

    キーワード const は、C++ の変数(オブジェクト)が定数であることを示すものです。「オブジェクトの内容を変更できない」というアクセス制御を行うときに使うわけです。簡単ですが、ポインタと絡むと const を書く位置によって意味が変わるので、このあたり、まとめておきましょう。後半では、クラスと共に使用する場合についても解説します。 最も簡単な場合 ポインタが絡む場合 const なクラスのメンバ変数 const なクラスオブジェクトを使う場合 最も簡単な場合 ページの先頭へ const を使う、最も簡単な場合とは、例えば、変更しない整数の定数を定義するような場合でしょう。次の例を見てください。変数 iL1、iL2 は、定数となり、値を変更できません。 int main() { // int 型変数と const int iL0 = 200; const int iL1 = 200;

    adilla
    adilla 2011/01/17
    ポインタの絡むconst
  • クリエイティブなC++ライブラリ "Cinder" の紹介 - Preferred Networks Research & Development

    こんにちは、人恋しい季節になってきましたね。 研究開発チームの祢次金(@nejigane)と申します。 エントリではCinderというクリエイティブなコーディング向けのライブラリについてご紹介したいと思います。 Cinderとは Cinderとは、画像、音声、動画等を簡単に処理&可視化できる、主にビジュアルデザイン向けの強力なC++ライブラリであり、The Barbarian GroupのAndrew Bell氏が中心となってオープンソースとして開発が進められています。 同様の思想を持つProcessingやopenFrameworksによく似ており、C++で簡単に記述できるうえ、WindowsMacOSX、iOS(iPhone/iPad)といった複数のプラットフォームをカバーしています。 細かい機能/特徴の紹介は家サイトに譲るとして、Cinderを極めるとどのぐらいクリエイティブな

    クリエイティブなC++ライブラリ "Cinder" の紹介 - Preferred Networks Research & Development
  • C++の便利ツール・ライブラリ - DO++

    フルタイムで働きはじめて4ヶ月。 いろんなことがありました。 今日はインターンが来ているということもあり日頃のC++コーディングライフの中で大変重用しているツールを紹介します。といってもどれも有名なツールでググれば解説がでてくるとは思いますので、一言ずつだけ紹介してみます。みなさんも何かよさげなライブラリ・ツールがありましたら教えてください。 - valgrind/callgrind/cachegrind プログラムの実行結果を解析するツール群。まぁ、王道であえて紹介する必要はないかもしいませんが.。valgrindはプログラムのどこかでメモリが漏れているかどうかのチェックに使います.コードのどの部分で確保した領域がどこで漏れているかまで追跡することができます valgrind --leak-check=full command プログラムのどのが計算量的にボトルネックになっているかを調べ

    C++の便利ツール・ライブラリ - DO++
    adilla
    adilla 2010/08/17
  • C++ code for Red-Black Trees And Interval Trees

    adilla
    adilla 2010/07/17
    赤黒木
  • C++マニアック,オペレータのオーバーロード,operator overload,演算子のオーバーロード,演算子

    ()、関数呼び出し演算子、関数オブジェクト 演算子の表へ ページの先頭へ () は、関数呼び出しの演算子です。これをクラス定義の中でオーバーロードすると、クラスオブジェクトの後ろに () を付けて、関数呼び出しの形式で呼び出せるようになります。 まず、定義の仕方を見てみましょう。次の例では、整数の引数 iValue を取り、これを 2 倍にして返す演算子 () を定義しています。 class CManiac { public: int operator()(int iValue) { return 2 * iValue; } }; 次に、これを使う側の例を見てみましょう。 int main() { CManiac maniac; // クラスオブジェクト maniac を作成する。 int iValue = maniac(1); // 関数呼び出し演算子 () を maniac に適用する

    adilla
    adilla 2010/07/16
  • 1