2008年8月15日金曜日

【C算法】第7章 集合 (その2)

今日はビットベクトル。

  • BsetMemNum、頭いいなぁ。こういうのを自分で発案できるようになると思えない。
  • list0705は、bsetlib.hにlist0704の関数のプロトタイプを書いとかないとコンパイルできなかった。gccの使い方がわるいのかな。
  • 演習0705。BsetIsSubsetとBsetIsPropserSubsetを作成。これ、やっぱりコーディング前にどれだけアルゴリズムを確認できるかが作業本体だった。アルゴリズムをCでどう書くか考える部分よりも、そもそものアルゴリズムを考える部分が大きい。
  • 自分の環境でintやunsigned longのサイズを確認しようとして、limits.hを見てみた。しかし、どのifマクロが効いて、結果どのUMAXなどが有効になるのかを追うのが面倒くさそう。そこで、gdb上でp sizeof(int)などとした。やはりgdbはREPL的。
  • 演習0706の可変ビットベクトルの実装に偉い時間がかかった。教訓。

    • ポインタにだんだん慣れてきたが、まだ弱い。ポインタが引数の関数に対して、呼び出しもとでオブジェクトを作ってその&を渡してあげるときに、呼び出しもとでもポインタをつくって渡しちゃったりする。それではまった。
    • ひとつの関数をつくるのと、ビットベクトルのライブラリを作るように、関数群をつくるのとを比べると、関数群の設計の訓練が足りていないことがわかる。これはどうやって訓練すべきか。

  • gdb上で関数を再定義して、そのまま走らせられれば便利なんだけどな。できるのかな?

次は文字列処理。こつこつ。

0 件のコメント: