2009-01-01から1年間の記事一覧

今夜はptr_funメモ

C++

やあみんなfloat値やdouble値の符号を反転する最も評価されるやり方はやっぱり、f=-f なのだろうか?あるいは f*=-1.0 かな?(←まさかね)。32ビットマシンと64ビットマシンが錯綜する昨今、符号ビット直狙いで反転なんて怖いことしたくないしね。どうなん…

関数テンプレートのデフォルトテンプレート引数が待ち遠しい、、

C++

やー、今日も書いたよファンクタちゃんたちをたくさんなー。いや、既存コードをファンクタにまとめ直してるだけなわけだけどさー。しかし何だな、やっててひとつ思うのは、関数テンプレートのデフォルトテンプレート引数というものができないという点が、と…

今日のワンポイント英会話

"HOW TIME FLIES!" 今日はこれ。"How many files?"ではないので気をつけてもらいたい。これは時間てどんだけ飛ぶのかしら?そう、察しのよい人はすぐにわかっただろうか。これはまさに「光陰矢の如し」的な意味に使うものらしい。「もうそんなに経つのか」と…

コンテナを受け取る関数を書くくらいだったら、、

C++

コンテナを受け取る関数を書くくらいだったら、各要素について呼び出せるファンクタとして提供する。 コンテナを受け取る関数を書くくらいだったら、各要素について呼び出せるファンクタとして提供する。 コンテナを受け取る関数を書くくらいだったら、各要…

参照引数受け取りメソッドも対応した自作bind1st(お手軽風)

C++

やあ子供たち、夜はまだまだ蒸し暑いね。夜更かしばっかしてないで早く寝ろよ(お前もな) class Vertex { public: const float& Position( void) const { return _position; } static Vertex* Create( void ){ return new Vertex(); } float _position; }; …

動径ループを手軽に実装できる便利ホストテンプレート

C++

プログラムで円や球を作る場合の、動径ループを書くのは面倒だ。記述すべき内容が陳腐でわかりきっている割には、M_PIの有無で悩んだり、ラジアンに直したり、分割角度を一次変数に用意したりなどうんざりだ。 そこで動径ループをやってくれるための便利テン…

NestCallによる無限階層関数呼び出しファンクタ

C++

先日のNestCallファンクタだが、1階層分だけ用意しておけば実はそれだけでもう、無限階層ネスト呼び出しに対応できることに気付いた。 template< class Fnc1, class Fnc2 > struct NestCall_t: public unary_function < typename Fnc1::argument_type, type…

本日の関数オブジェクトはOpenGLがらみ

今日の発明はこれ。 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( +…

今日考えたもの:NestCall関数アダプタ

C++

なんでもかんでもfor_eachやtransformといった高階関数で記述するのがマイブームな今日この頃、こんなものを考えた。 こんな状況があったとする。 class C{ //クラスC public: void Hi( void){ cout<< "hi!"<

メンバ関数(const版)へのポインタをmem_funに渡す

C++

キャストするしかないのか。。 これも例の、テンプレートのパラメータ引数のその場でのオーバーロードは期待できないと私が思い込んでいるケースの一種なのだろうか。 #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で、簡単な統計情報計算テンプレートを作成してみたよ。要素セットと、各要素の値の計算方法を指定すると、以下の統計情報、 総和、平均値 分散 …

std::accumulateを使う

C++

#include とすれば、std::accumulate() が利用できるのか。これまたなんと便利な。。(涙) これはコンテナの中の値の加算とか、統計をとったりするのに便利だ。っと、第4引数の二項演算子はどう使われるのだ?(以下、sgiのページより) The function objec…

COUNTIF on OpenOffice

OpenOffice 3.0.0 の表計算シートアプリおけるCOUNTIF分は、範囲と文字列のところを、カンマで区切るのではなく、セミコロンで区切るとうまく行くようである。 =COUNTIF(E4:E25,"りんご") // No! =COUNTIF(E4:E25;"りんご") // Good!

数式のグラフ描画サイト

数式のグラフ描画してくれるサイトがあるのか。これは便利。 縦軸の描画範囲指定がないのか。自動か。縦軸のスケールやオフセットは数式にて調整すれば全然使えそうだ。 0.001*(1/x^12-0.1*1/x^6) (範囲:1.4→4 ) Lennard-Jones ポテンシャルっぽい形状なん…

何でもstd::for_eachで行こう

C++

(後日追記)いやいやいや。 やあみんな。時は流れ、C++11の時代になったよ。今はもうラムダ式が使えるよ。C++11については、「C++ポケットリファレンス」などの本を見てもらうとして、以下本文に書いたようなことをやりたい場合、もう難しいことは一切考え…

除外された要素はいずこへ unique, remove_if,,

C++

unique で重複していた要素群も知りたい remove_if で、除外された要素群もとりたい このようなことが意外に簡単にできないということで、自分の思い込みで今日はひどい目にあった。つまり、真実はこういうことだった。 unique を使った後に、内容が意味をな…

米国気象・災害事情その後

大西洋から迫りくる今年第2の観測トラッキングされたハリケーンである「BILL」は、依然として大西洋上にあるが、勢力を強めてきており、まもなくカテゴリー2に昇格される見通しだ。ただし、その進路は大きく北の方にそれると見られており、本土に上陸する…

8月17日現在の米国東海岸ハリケーン最新事情

アメリカの東海岸では、毎年夏にハリケーンシーズンが到来する。ハリケーンは大西洋上の熱帯で発生し、バミューダ諸島やフロリダ半島をかすめながら、本土に上陸し、各地に多大な災害をもたらすものもある。 今年は8月も半ばを迎えてなお、ハリケーンが全く…

陽解法と陰解法

逐次計算には限界がある。効果が隣接する要素間で次々に波及して波及して、そして岸までたどり着くかのような解の出し方。岸にたどり着いたことを知るのは岸に接している最後の要素だけだ。その一つ前の要素は岸の存在を知らなかったはずだ。現実には、とい…

今日もMFCでした

今日もMFCやった。今日はリストビュー初めて使ってみた。(使うってやっぱり必要性がないと使わないよね。このウィジェットは使ったことないっていうのは要は、そういう必要のある場におかれてこなかったからなんだよね。そういうのを使う仕事をとっていけば…

数式が嫌い

僕にとって数式は、雲定規のようなもので、とても不器用な、硬い、緊張感たっぷりでちっとも柔軟じゃない、そんな思想や態度の象徴に思えるのです。ニュートンの運動方程式だって近似だってことが相対性理論によって明らかになったように、一般相対性理論だ…

今さらTortoiseSVN メモ〜誰にもきけなかった

C++

タグやブランチをちゃんと管理しようと思った場合は、インポートするトップフォルダtopの中の構成を、 top/ trunk/ branches/ tags/ と3つに分けて、これのtrunk/(幹)の中に、初期の全ソースセットを入れた状態で、topフォルダを初回インポートする、とい…

C++0x、コンセプト除外の決断(3ページ目)

C++

話題としてはもう古くなってしまったけど、C++0xにおいて、コンセプトが切り離された件で、Bjarne博士がDr.Dobbsに掲載している記事の、技術的な内容を綴った3ページ目(とくに、C++1xやC++yなどについて触れている部分)についても勝手に和訳が出来上がって…

多重継承な場合の、メモリ配置について

C++

A、B二つのクラスを継承したCというクラスを、A、Bにキャスト、あるいはそこからさらにアップキャストしたらどうなるかを実験してみた。あくまで、手元のVS2008SP1で実験してみた結果。 #include <iostream> using namespace std; #if 01 class A{ public: char m_a[5]</iostream>…

C++0x、コンセプト除外の決断

C++

C++0x、コンセプト除外の決断というタイトルで、Bjarne Stroustrup博士がDr.Dobbsに7月22日付けで寄稿していた。その中でも、「何が起きたのか」について語っているくだりを読みながらメモしているうちに勝手な訳文ができてしまったのでせっかくだからメモ。…

だまし絵展に行ってきた

渋谷Bunkamuraで開催されている、「だまし絵」展に言ってきました。結構面白かった。まるでSIGGRAPHのエマテクやアートギャラリーを見ているようだったとまでは言いませんが、人間は昔から視覚のいたずらというものを楽しんできたのだなーと、またそういうも…

C++をSTLつきのC言語のように捉えてみる

C++

C++とかってそのまんま正直に使ってると多重継承とか入るとすぐダウンキャストとかアップキャストとかできなくなったりして焦ったり騒いだりしなきゃなんないでめんどくさくねーっすか。時としてですが。 基本的にメモリ管理自分でやっちゃえば、オブジェク…

operator new/delete 覚え書

●operator new() のオーバーライドでC2660エラー MFCのコードをコンパイル中に、operator new() をオーバーライドしようとしてる箇所で、「operator new():3つ以上の引数は指定できません」とかわけのわからんエラーで怒られて困ることがあるが、これはMFC…

パソコンするときは部屋を明るくしよう

部屋暗くしてパソコンしてたらなんだか目の奥のあたりから体の芯のあたりまでむずむずしだして、一瞬だが吐き気のような、何だか急に暴れだしたくなるような、「うわー!」っと叫びたくなるような、ようするにすげー気持ち悪くなった。。 これが激しくなると…

クラスメンバー宣言/getter/setter自動記述マクロ

C++

// macro for properties #define POC_PROP( typ, mem, Mem )\ public:\ void set##Mem( const typ& val ){ mem = val; } \ typ& ref##Mem( void ){ return mem; }\ const typ& Mem( void ) const { return mem; }\ typ* p##Mem( void ){ return &mem; }\ pr…