new について2010/04/06 04:19

今さらですが、new についてです。

例えば、malloc のように領域だけを確保したい場合。

void *ptr = operator new( 100 ); .// 100[byte] 確保

確保した領域を使って、クラスを初期化したい時

ClassA *p = new( ptr ) ClassA;

とできる。(STLのallocatorで使われていました)

頭の中が悩んでいます。

2進数の読み書き2010/04/10 09:52

C++ を知ってから10年以上経つのに知らないことばかり出てきて、結構へこんでいる雲です。ところで、今日、初めて知ったC++の機能をご紹介しましょう。

10進数を2進数へ変換する

cout << bitset< numerical_limits<unsigned short>::digits >( 100 );

とすると、2進数が表示されます。

2進数を10進数へ変換する

cout << bitset<100>("100").to_ulong()

う~ん。やっぱり、知は力ですね。

Iroha Note2010/04/17 08:32

季節外れの大雪で雲の住んでいるところも雪景色。やれやれ。とため息をついていたりします。さて、雲は、お勉強すると、ついつい、違うことに気が向いてしまい、気が付くと最初の目的から大きく離れた所を調べていたりします。まぁ、それは、知識の幅が広がったということで良いのだけど、ともすると、最初にやっていたことをすっかり忘れてしまうこともあってちょっと善し悪しだったりします。で、何とか、こういうことを効率良く、簡単に(ここが重要)管理できないかなぁ~。といつも思っていました。で、最近流行のアイデアノートなんか良いんじゃない?と思っていろいろと見てみたら、ついに発見しました。Iroha Note 。ずぼらな雲にぴったり。デザインも操作性も文句はありません。あるとすると、Adobe AIR で書かれていることくらい。Microsoft. もっと、簡単に見栄えの良いUIを作成できるツールを提供してください。こんな便利なソフトを AIR で作られてしまうことにもっと危機感をもって欲しいと思います。

Iroha Note

http://www.at-iroha.jp/software

アルゴリズムディスパッチ2010/04/21 06:00

VisualStudio2010を楽しみに待っていたのに、なかなか、公開されないので、C++ で初めて知ったことを書いてみようと思います。

雲は、STLは昔から使っているのですが、STLの詳細はあまり調べたことがありません(正確には、挫折しているといった方が良いかも)。とはいえ、何回目かのチャレンジでやっと、iterator_category の意味がわかりました。

なんで、iterator_category などを調べる気になったのかはよくわかっていませんが(←どういうこと)、いろいろと、調べているうちにきっとたどりついたのでしょう???

さて、アルゴリズムディスパッチですが、要するに、iterator の特性を表す構造体 iterator_traits の中のメンバーです。このメンバーの目的は、結局、コンパイル時に最適な関数を呼び出すために使われるというのがミソでした。

例えば、 void goo( input_iterator_tag ) {

}

template<typename Iterator> void foo( Iterator p ) {

  goo( iterator_traits<Iterator>::iterator_category );

}

のようにしておくと、foo の引数である Iterator のタイプによってgooを呼び出しを切り替えられる(つまり、input_iterator_tag を引数に持つ関数とか、output_iterator を引数に持つ関数を呼び分けられる)。ということがポイントです。

これで、数年来の謎がちょっとは解けてちょっと嬉しい雲でした。