タグ

C++とprogrammingに関するpoginのブックマーク (2)

  • C++による行列演算クラスの作成

    もう随分と昔の事です。 もう随分と前のことになりますが、きっかけは幾つかの物事でした。 当時、なんとなく知人に借りて読んでいた有限要素法入門書には、行列演算の基礎や行列演算による式の解法が書かれていました。 また、その頃使っていたHP-BASIC(Rocky Mountain Basic)には組込みの配列(行列)演算関数があり、何とはなしに使っていましたが便利なものでした。 ちょうどその頃、C++に興味を持ち始め、そこで知ったのは、C++では演算子(operator、+ とか * 等)をユーザー定義出来るという事でした。 そこで思いついたのが、C++のユーザー定義演算子を使えば、プログラム中でも自然な形で行列演算が記述出来るんじゃないのか?という事でした。 "自然な形で行列演算を記述"するというのは、例えば、行列A、B、Cがあったとすると、 C = A * B; //行列Aと行列Bの乗算を

  • C++のテンプレートでラムダ計算と型推論 - 貳佰伍拾陸夜日記

    C++のテンプレートを, コンパイル時に走るプログラムを記述するための言語だと思うと, この言語はチューリング完全なので, 当然ラムダ計算のインタプリタを実装できるし, そのラムダ計算の項の型を推論することもできる. できるからと言って馬鹿みたいにやってしまったという話. ソースコードは末尾. テンプレートメタプログラミング テンプレートをプログラミング言語だと思うと, 構文はともかく, 副作用がなく関数(っぽいもの)を淡々と定義してパターンマッチして再帰呼出しして, という感じでとても関数型っぽい. 関数と返り値 テンプレートメタプログラミングではテンプレートクラスを関数だと思って使う. そして返り値はtypedefして返す. たとえば任意の型S, Tを受け取って前者を返す関数firstは template<typename S, typename T> struct first { t

    C++のテンプレートでラムダ計算と型推論 - 貳佰伍拾陸夜日記
    pogin
    pogin 2011/11/01
    テンプレートが理解できそうな予感
  • 1