C++ (12) 2進ベクトルのクロス積の実装

2進ベクトルのクラス CBVector と 2進行列のクラス CBMatrix をそれぞれ書き直しました。書き直したコードは CodePlex に GraphGo 0.5 として公開しました。ドキュメントはこちらに公開しました。
CBVector ではビット列を int の配列から 32 ビット固定の bitset に変更しました。これで CBVector のメモリ解放の問題はなくなりました。囲碁で使うのはせいぜい 19 路なので、19 ビット以上あれば困らないだろうということにしました。
さらに戻り値が CBMatrix になる CBVector::cross メソッドを定義しました。これはベクトル同士のクロス積なので結果が行列になります。2つの DLL が相互に参照するケースは Reference を設定しようとした時点でエラーになってしまいます。これを解消するにはビルドの手順を変更する必要があるようです。Visual Studio のビルドの手順を変更するのが難しそうだったので、結局2つのクラスを binarymath.dll という名前の一つの DLL にまとめることにしました。
CBMatrix ではビット列の配列から CBVector の配列に変更し、vector テンプレートを利用しました。メモリの解放がうまくいっているのかどうかは、ちょっと今のところ理解できていません…。

カテゴリーC++

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト /  変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト /  変更 )

%s と連携中

%d人のブロガーが「いいね」をつけました。