c/c++

C言語で、ruby用拡張モジュールを作成する方法

C言語で、rubyの拡張モジュールを作成する方法について調べてみました。とりあえず例として Sample という拡張モジュールを作成し Sample::sample() というメソッドをCで実装 してみました。このSampleモジュールを使うと、以下のrubyのコードは require "sa…

c++のデバッグをするならgdb-6.8を使いましょう。

2008年の3月にリリースされたgdb-6.8の目玉機能の一つに「C++サポートの強化」があります*1。この機能を使うと、STLやboostのようなテンプレートを使ったコードのデバッグがかなり楽になります。C++使いの方は、是非gdbを6.8にupgradeしましょう。具体的に、…

GCC 4.3 情報

GCCの次期バージョン GCC 4.3 がそろそろリリースされそうです.そこで実際に開発版のGCC 4.3を試し,変更点・残っているバグなどを調べてみました.変更点・改良点は http://gcc.gnu.org/gcc-4.3/changes.html にまとめられています.以下,GCC 4.3のsnapsh…

intel compiler v.s. gcc

intelコンパイラの最新版10.1が入手できたので,久しぶりにベンチマークを取ってみた.比較対象は intel compiler (ICC) version 10.1 20070913 gcc-4.2.2 gcc-4.3.0 (snapshots/20071020) これらのコンパイラで手元にあった数値計算のコードをビルドし,生…

ブレセンハム(Bresenham)のアルゴリズム

FizzBuzz問題の次の問題として,直線の描画アルゴリズムなんてどうだろう?直線描画のアルゴリズムといえばブレセンハム(Bresenham)のアルゴリズムが有名.知っていると知らないでは雲泥の差.試行錯誤するもよし,そのままブレセンハムを実装するもよし.力…

STLのalgorithm,functorの使い方.

STLのalgorithm,functor 関連をシンプルに整理してみました.以下,文中の op は関数オブジェクト T, T1,T2 はtypename a, b はT型の定数 x, y はT型の変数 or 定数 Ite,first, last はイテレータ とします. equal_to, not_equal_to, greater, less, grea…

c++で階乗を計算

テンプレートメタプログラミング(template metaprogramming)で,20の階乗を計算するコード. #include <iostream> using namespace std; template <int64_t N> class X { public: int64_t operator()(){ return X<N-1>()() * N; } }; template <> class X<1> { public: int64_t operato</n-1></int64_t></iostream>…

c/c++でsqliteを使う方法

sqlite3をc/c++で使う方法についてメモ。以前ruby で sqlite を使う方法 - ぴょぴょぴょ? - Linuxとかプログラミングの覚え書き -でも書いたように、DBを使うアプリケーションは、通常はrubyなどのスクリプト言語で記述したほうが楽です。でもc/c++からもデ…