2009-09-01から1ヶ月間の記事一覧
今回は前回に考えたPrevsMustGoクラスの抽象度を上げたクラスを考えてみるぞ。PrevsMustGoは、前回値を参照するループ処理を、for_eachで行えるようにするための試みなんだったね。今日発表するPrevRef ファンクタ(ソースは以下)はその汎用性を高めたもの…
やあみんな元気にしてるかい。忘年会の会場となる店が今日やっとこさ決まって今年の幹事を任されているおじさんとしてもやっとこさ一息ついているところだよ。ところで for_eachでだって、前回値を使ったループ処理が可能だ。これでコンテナを引数にとるアル…
ってないのかな、みたいな。あるいは簡単に作れるとか。 std::transformなどに渡すための、各種キャスト演算子の機能をファンクタにしたいと思ったのですが、どうも ptr_fun( static_cast< int > )(); などとやってみてもコンパイラに「ハァ」?と言われてし…
やあみんなfloat値やdouble値の符号を反転する最も評価されるやり方はやっぱり、f=-f なのだろうか?あるいは f*=-1.0 かな?(←まさかね)。32ビットマシンと64ビットマシンが錯綜する昨今、符号ビット直狙いで反転なんて怖いことしたくないしね。どうなん…
やー、今日も書いたよファンクタちゃんたちをたくさんなー。いや、既存コードをファンクタにまとめ直してるだけなわけだけどさー。しかし何だな、やっててひとつ思うのは、関数テンプレートのデフォルトテンプレート引数というものができないという点が、と…
"HOW TIME FLIES!" 今日はこれ。"How many files?"ではないので気をつけてもらいたい。これは時間てどんだけ飛ぶのかしら?そう、察しのよい人はすぐにわかっただろうか。これはまさに「光陰矢の如し」的な意味に使うものらしい。「もうそんなに経つのか」と…
コンテナを受け取る関数を書くくらいだったら、各要素について呼び出せるファンクタとして提供する。 コンテナを受け取る関数を書くくらいだったら、各要素について呼び出せるファンクタとして提供する。 コンテナを受け取る関数を書くくらいだったら、各要…
やあ子供たち、夜はまだまだ蒸し暑いね。夜更かしばっかしてないで早く寝ろよ(お前もな) class Vertex { public: const float& Position( void) const { return _position; } static Vertex* Create( void ){ return new Vertex(); } float _position; }; …
プログラムで円や球を作る場合の、動径ループを書くのは面倒だ。記述すべき内容が陳腐でわかりきっている割には、M_PIの有無で悩んだり、ラジアンに直したり、分割角度を一次変数に用意したりなどうんざりだ。 そこで動径ループをやってくれるための便利テン…
先日のNestCallファンクタだが、1階層分だけ用意しておけば実はそれだけでもう、無限階層ネスト呼び出しに対応できることに気付いた。 template< class Fnc1, class Fnc2 > struct NestCall_t: public unary_function < typename Fnc1::argument_type, type…
今日の発明はこれ。 struct MyGlVertex3fv { void operator()( const Vec3& v ) const { glVertex3fv( v.V() ); } }; 例えばこう使う(↓) vector< Vec3 > vv; for( int i=-10; i<=10; ++i ){ vv.push_back( Vec3( -10, i*.08, 0 ) ); vv.push_back( Vec3( +…
なんでもかんでもfor_eachやtransformといった高階関数で記述するのがマイブームな今日この頃、こんなものを考えた。 こんな状況があったとする。 class C{ //クラスC public: void Hi( void){ cout<< "hi!"<
キャストするしかないのか。。 これも例の、テンプレートのパラメータ引数のその場でのオーバーロードは期待できないと私が思い込んでいるケースの一種なのだろうか。 #include <iostream> #include <algorithm> #include <vector> #include <functional> #include <numeric> using namespace std; class A{ pub</numeric></functional></vector></algorithm></iostream>…
やあ子供たち。夏ももう終わりだね。今日はおじさんはstd::accumulateや、 tr1::bind の練習のためにVS2008SP1で、簡単な統計情報計算テンプレートを作成してみたよ。要素セットと、各要素の値の計算方法を指定すると、以下の統計情報、 総和、平均値 分散 …
#include とすれば、std::accumulate() が利用できるのか。これまたなんと便利な。。(涙) これはコンテナの中の値の加算とか、統計をとったりするのに便利だ。っと、第4引数の二項演算子はどう使われるのだ?(以下、sgiのページより) The function objec…