« C++ (11) C++ の動向 | トップページ | Small Basic v1.1 および v1.2 開発状況 »

2015/01/28

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++ (11) C++ の動向 | トップページ | Small Basic v1.1 および v1.2 開発状況 »

C++」カテゴリの記事

コメント

コメントを書く



(ウェブ上には掲載しません)




トラックバック


この記事へのトラックバック一覧です: C++ (12) 2進ベクトルのクロス積の実装:

« C++ (11) C++ の動向 | トップページ | Small Basic v1.1 および v1.2 開発状況 »