C/C++

C++ まちがいさがし

デバッグ用に、初期化リストの中で出力を行える次のクラスを考える: // cdebug.hpp #include <iostream> class CDebug { protected: int N; public: CDebug(int val) : N(val) { std::cout << val << std::endl; } void print() { std::cout << N << std::endl; } }; </iostream>…

数独自動求解プログラム C言語との比較

やっぱりC言語の方が速い。 同じアルゴリズム(は厳密には使えないけど、大雑把に戦略が同じ)で↓のプログラムをC言語に書きなおして実行した結果、C言語では、間なんかあかずに、一瞬で全ての解が表示される。あと、ghcでコンパイルした実行ファイルは、何…

そういえば

何日か前にやったことを忘れないうちにメモ。テンプレート引数の部分特殊化で、テンプレートクラスで特殊化したいと思った時。 template<template<int> class func, int m> class find_result< func<m> > {}; とすれば良いってさ。 いや、g++ の話ですが。</m></template<int>

本日のまとめ

改めて見返してみると、今日は随分と馬鹿なことをしてしまったので、反省。 そもそもTMP的な部分はコンパイル時計算 従って使用し得る"値"はコンパイル時に全て用意しなければダメ この前提を壊さないようにIOを導入しようと思うが、IOでは 実行時にプログラ…

ちょっと改良

昼に書いたやつの findfact は fact のみにしか対応してなかったからつまらないと思い、若干汎用性のある奴を書いてみたりした。 #include <iostream> #define MAX_NUM 10 template <int m> struct fact { typedef int RetType; enum {value=m*fact<m-1>::value}; }; template <> s</m-1></int></iostream>…

C++で関数型プログラミングができないかな?

と思い立ったが吉日。 授業サボって作ってみた。最近 haskell ばかりさわっていて、C/C++には触れてない。 そんな生活だからか、C++のTMPでの階乗計算とか、たらいまわしから、関数型プログラミングを想起した。 勿論、TMPの本領は数値計算などではないのだ…