2005-11-01-01-VBGeneric Version 1.02.352.001
>> Site top >> weblog >> 月別アーカイブ >> 2005年11月のlog >> 2005-11-01-01-VBGeneric Version 1.02.352.001
最終更新日付:2005/11/01 01:00:00
VBGeneric Version 1.02.352.001
2005 年 11 月 01 日
この開発日記を読んでくださる皆さんは、ほとんどが Palm 関連で訪れてくださる方だと思っている。そのせいか、Palm 以外の話題を書くのは微妙に気が引けるのだが、もともとは陰郎の開発日記なので Palm の話題に限る理由は何もない。読んでも面白くない方もいるだろうとは思うが、ひとまず申し訳ない。
先日、VBGeneric という陰郎の作品を1年半ぶりにバージョンアップするというエントリを書いた。修正はすぐなのだが、ドキュメントが面倒なため、正直なところ 11月の中旬までにできればいいかな...と思っていたのだが。
なぜかできてしまいました...というわけで、VBGeneric version 1.02.352.001 のリリースであります。ぱちぱち。
で、それだけで終るのもなんなので、この場を借りて VBGeneric の宣伝をさせていただきたいと思う。Visual Basic や VBA をお使いのそこのあなた。是非読んでみて欲しい。いつだったかのエントリでは小難しいことを書いたが、今回はもっとわかりやすくいこうと思う。
単純に行こう。まずは配列だ。VBGeneric の配列である GVector は、要素の数を指定しなくても後ろにどんどん要素を追加できる。こんなふうに。
Dim gv As New GVector Call gv.PushBack( 3 ) Call gv.PushBack( 0 ) Call gv.PushBack( 9 ) Call gv.PushBack( 4 ) Call gv.PushBack( 7 )
この時点で要素は5つ。もちろん 100 でも 1000 でも、メモリを自動的に拡張してくれるナイスガイである。では、これをソートしてみよう。1行でことたりる。これで配列の中身は 0, 3, 4, 7, 9 と並ぶようになる。
Call Algorithm.Sort( gv.First(), gv.Last() )
どうだろう? たったこれだけでも便利だと思ってもらえるのではないだろうか? あまり長々と書くのはよすが、あと1つだけ書かせて欲しい。なんと、文字列などを配列のインデックスのように使える魔法があるのだ。それは GMap というコンテナである。
Dim gm As New GMap gm("sin") = 1989 gm("wish") = 1991 gm("closer") = 1994 gm("wretched") = 1999
こうしておいて、以下のようにすればメッセージボックスには 1994 と表示される。
MsgBox gm("closer")
実際にはこれは魔法でもなんでもない。これは連想配列というもので、キーとなる値(上の例では文字列)を使用して2分木構造を作成してデータを保持するものだ。バイナリサーチのイメージで検索をかけるため、そこそこ早い上に便利に使える。
VBGeneric は、このようなデータ構造やアルゴリズムといったプログラム開発をサポートする部品を ActiveX DLL の形式で実装したクラスライブラリだ。もちろん上に紹介したのはそのごく一部である。全部を使いこなせばものすごいことができるが、上に書いた程度の使い方でも十分利用価値がある。C++ の標準ライブラリ(の一部)を模倣して作られており、なんといってもフリーライブラリだ。作者の陰郎も非常に便利に使っている。自分で言うのもなんだが、1万円払っても使う価値はあると思う(だからこそ自作したわけだが)。
興味をもたれた方がいたら、是非試してみていただきたい。使ってみてわからないことがあれば遠慮なく質問していただければ、多分大喜びで対応するだろう。この VBGeneric こそが陰郎のこの8年間の最大の(そしてもっとも報われなかった)作品なのである。
コメント
このページのタグ
Page tag : STLとその移植
Copyright(C) 2005-2021 project-enigma.
Generated by CL-PREFAB.