2009-10-01から1ヶ月間の記事一覧

書き込み専用コード

C++

Effective STL 47項「書き込み専用コードの作成は避けよう」は、なかなか味のある項だと思う。そこに書いてある内容は、まさに読み手側に立ったコード記述をしようという内容だ。とまあそれだけならどこにでもある話なのだが、ここで触れられているのはつま…

STLport使用環境設定覚書

C++

STLportを試してみたよ。以下、自分用のメモ。 解凍先フォルダにてconfigure --helpを読んだ後、configure msvc9 実行、build/lib に移動、そこに、vsvars32.batを、コピーしてきて実行。そこでnmake clean installを実行すると、ビルドが始まる。 hello.sln…

AABBと無限開平面との交錯判定

C++

3次元空間にAABB(AxisAlignedBoundingBoxのことな)がそうだなー、5万個くらいあると思ってくれ。ある点を始点として、任意2方向に半直線を2本伸ばした際に、線と線の間に張られる無限開平面と、AABBとの交錯判定を高速に行う方法を考えています。AABBと半直…

STL:私がすぐアルゴリズムを使いたがる理由

C++

普通のfor分を書くのに比べてどうしてfor_eachなどの高階関数で書いた方が安心できるのか、その理由をなかなか明確な言葉にできなかったのだけど以下のようなことなんじゃないかと思い始めています。(その他さまざまな理由がEffectiveSTLとかにもたくさん書…

sgi::unary_composeっていうのがあった..orz

C++

ガーン。NestCallやNestCall1を作って自慢したりしてきたわけだが、すでにSTLのSGI拡張として、unary_compose なるものが存在したらしい。いやいやむしろ朗報ですよ、NestCall同等の機能が標準として存在してるのならそっちの方がいいよ、うんうん。俺だって…

ちょっと待った!そのbind1stに渡す拘束値、本当に実体渡しでいいのかもう一度考えよう

C++

当然のことなのですが、自分用なのでちょっとメモ。 vector< int > va(12); fill( va.begin(), va.end() , 77 ); vector< int > vb; こういう状況があるときに、 for_each( va.begin(), va.end(), my_bind1st_ref( mem_fun1( &vector< int >::push_back ), &…

remove_modifier

C++

template< class S > struct remove_modifier { template< class T > struct remove_constref_sub{ typedef T out_type; }; template< class T > struct remove_constref_sub< const T >{ typedef T out_type; }; template< class T > struct remove_constre…

本日の関数アダプタnurs::bind_binary

C++

今日はnurs::bind_binary の紹介だよ。bind_binaryは、予め渡されたbinary_functionを、unary_functionとして呼び出せるようにするための関数アダプタだよ。前回のNestCall1と併用することによってこれまた高階関数で記述できる処理の幅がぐっと増すことにな…

NestCall の1引数版、NestCall1

C++

今日は無限階層呼び出しNestCallの1引数受け取りバージョンである、NestCall1の紹介だよ。まずは以下がnurs::nest_call1のソースだ。 // nest_call1 template< class Fnc1, class Fnc2 > struct nest_call1_t: public binary_function < typename Fnc1::arg…

通し番号をキーにしたmapは構築しないで!

C++

やあ子供たち元気にしてるかい。今日は複数のオブジェクトがあるとき、それぞれのオブジェクトに通し番号をつけて、その通し番号でオブジェクトを逆に検索したい、なんていう場合の話だよ。こういうときに、int値の集合をキーにしたmapを構築してしかもそれ…

VS2008SP1のKB960075v2 hotfixを君はもう当てたか?

VisualStudio2008SP1で、どうも出力ウィンドウを独立表示移動したりして、終了すると、どーも必ずIDEが異常終了するなーと不愉快に思っていた。 そこで、いつもの落ちる画面を良く見ると「解決策を探しています」と出てるから期待せずにそのままにしておくと…

nurs::parse_tuple

C++

昨日のParseFloatVec は、何も浮動小数点に限った話ではないので、parse_tupleに改名。float_typeはatom_typeに改名。さらに、remove_modifierを使用(091012)。 namespace nurs{ template< class Func > struct parse_tuple_t { typedef typename nurs::remo…

浮動小数点数配列パース用ファンクタ

C++

今日のネタは浮動小数点数の1次元配列を便利に読み込みできるファンクタだよ。浮動小数点数の一次元配列があって、2つずつ読んで数値ペアとして解釈したりとか、3つずつ読んで、3次元ベクトルの3つの軸成分として解釈したりとか、みたいなそういう浮動小…