[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。
ども・・・・・・・・・・・・・・・・・・GES会長の和佐田雅史です。
今日は新世界の技術と呼ばれているtemplateMetaProgrammingについてです。
少し前にGenericProgrammingについて触れましたが、それの応用です。
GenericProgrammingは型引数というものを持ち、型に依存しない素晴らしいプログラムが組めるというものでした。
// ラジアン
template< typename T > inline T Radian( T Degree )
{
return static_cast< T >( PI/180.0f)*Degree;
}
このようにするとT型へ勝手にラジアン変換してくれる便利なユーティリティの出来上がりです。
float Angle = Radian< float >( 60.0f );
double Angle = Radian< double >( 60.0f );
のように型引数で指定すると勝手に展開されて、その関数を構築してくれます。
※実際はstatic const float Radian = PI/180.0f;と置いて手動で変換する方が遥かに速いですが。
しかしtemplateで渡せるのはclassや、typenameだけではありません。
int、unsigned( unsigned int )、long等と言った整数値も型として渡すことが可能です。
( VisualC++ 6.0コンパイラならdouble等も渡せます。 )
これを利用しない手はありません。
これを利用すれば、コンパイル時に型生成だけで数値演算を行うことも可能です。
以下を踏まえて階乗を計算するtemplateを実装してみます。
// 階乗計算templateMeta
template< unsigned N > struct Fact
{
enum { Val = N * Fact< N - 1 >::Val };
};
// template特殊化 : 0か1の階乗の場合
template <> struct Fact< 0 > { enum { Val = 1 }; };
template <> struct Fact< 1 > { enum { Val = 1 }; };
// 分りにくい人の為にマクロで呼びさせるに定義
#define FactT( n ) Fact< n >::Val
0の階乗や1の階乗は1なので予めtemplateの特殊化をしておきます。
templateの特殊化とは、この型の場合はこういう動きをするというものを定義する機能です。
Fact( 3 );
とすると3の階乗をコンパイル時に型として生成し、実行時には既に求まっているものとなります。
必ずしも必要な技術では無いですが、学生にして神の領域に挑みたい方はどうぞ。
templateMetaに関しては、boostやLokiというライブラリを解析すれば結構勉強になります。
最もそれらが理解出来るのならば学校に来る必要等無いですが・・・・・・・・・・・・。
それではお疲れ様でした。
時間って早いですね…頭痛薬飲んで布団で丸まってたらこの時間でした。矢那です。
何か書け、と言われ。雑記しか書くもんねーよ!と返しましたが
毎回私の雑記だけが増えていくのもアレですし。うん。
発表会も近いので今日は「発表会のプレゼン方法」について
講義 ではなく ちょっとしたネタ をいくつか。
あまり役にたたないかもしれませんが、いってみましょー
ども、こんばんわ~
最近こたつが恋しいZAKIです
部屋が狭くてこたつ置けないんですよねぇ…
いいなぁ、こたつ…
さて、今回のテーマは「メモリリークを探せっ!」です。
メモリリークとはプログラム中で確保したメモリ(画像データ、new,mallocなど)を開放し忘れて残してしまうことです
こいつが残り続けるとどんどん使用可能メモリが無くなってOSがフリーズすることがあります(一回ありました
探すにも一つずつコードを調べていくのも面倒。
そこで!プログラムで表示させちゃいましょー!
またEkiyaです。
もう寒すぎます。
もう本番も近いですね。
皆さん頑張っておられますか。忘年会の準備とか。早くしないと予約取れないぞ?
12月から3月までが一番忙しく、早く時間が過ぎてしまいます。
しかもその間が一番就職活動が盛んと噂です。
気付くと置いていかれて、テキトウに就職してしまうなんてことにならないようにしましょうね。
練習方法について。
まぁ……当たり前の事って感じですが。
スイーツ(笑)
さてさて遅れましたEkiyaです。
今日は面接の考え方講座~ちゃんちゃん!
「自己PR」
について!
みんな苦手って言うんじゃないでしょうか。
私も苦手です。したくないですね恥ずかしいし。
まぁそんなこと言ってられないのが自己PR。
何をパブリックリレーションしろって言うんでしょう。
自己宣伝活動ですよ。
なるほど。
「私の肉は100g1000円です」(脂肪的な意味で
肉が多い人ほど有利ですね!
……サーセン。
じゃぁどうやって話すのかっ!
ふふっ気になったら読むといいよ。ふふっ。