メルマガ:あゆしゃのC言語プログラミング
タイトル:あゆしゃのC言語プログラミング(Vol.558) テンプレート木構造1 概要  2005/05/09


/*========================================================*/
    <<<あゆしゃのC言語プログラミング>>>
/*========================================================*/
 第558回 テンプレート木構造1 概要
 発行    2005年5月9日(月曜日)
 発行数   約2600

{magclick}
/*========================================================*/
 はじめに ( 決り文句 )
/*========================================================*/
・このメールマガジンは、主にまぐまぐさんから発行しています。
・ジャンルは、マルチメディアのプログラム、C言語です。
・横60文字で作成し、インデントは大抵半角スペース4つです。
・ここで扱うプログラムは、C言語と半光年以内のものです。
・登録解除は、メルマガのホームページでお願いします。
・過去ログはバックナンバー(下欄参照)を活用して下さい。
・内容は私が感じたもので、最新の技術も、へたれもあります。
・わかりやすさを優先させる為、たまに嘘があるかもしれません。
・セキュリティ突破のため、暗号化された単語があります。

/*========================================================*/
 ご挨拶
/*========================================================*/

 こんにちは。あゆしゃです。

 ゴールデンウィークはいかがでしたか?

 私は毎日、フfァイアーエeンブレムでした。

 なんとか、ノーマル(一番簡単モード)をクリアできました。

 ヒットするゲームには4つの要素が必要です。

1.新技術
2.コミュニケーション
3.世界旅行
4.増の要素

 たとえばスsーパーマmリオブラザーズ(100点)は、

1.ファミコンという新技術
2.子供達が集まる遊び場、2プレイ可能
3.陸海空、さまざまなステージ
4.魔王クッパをやっつけてピーチ姫を助ける

 という感じでポイントを抑えています。

 たとえばスsトリートフfァイター2(95点)は、

1.CP2(でかいキャラをぐりぐり動かすシステム)
2.対戦格闘
3.各国を代表するキャラクター
4.世界一になる

 という感じでポイントを抑えています。
 最近のものは3と4を軽視しているので良くないと思います。

 それを踏まえて、今回のFEはどうでしょうか。

1.なし(フルポリゴン戦闘だけど新しくない)
2.あり(育成。あとインターネットにお世話になりました)
3.世界を一周する(「系譜」ほどではない)
4.なし(熱く燃え上がる理由付けがない)

 うーん、いまいちかなぁ、自己評価40点。

 ちなみに、少し前に騒いでいたフpァントムキkングダムは、
2(やりこみ要素)のみで、30点。

 フpァントムブbレイブと比べると幻滅です。

 フpァントムブbレイブ(70点)は、

1.コンファイン(配置ルール。←かなり評判がいいらしい)
2.やりこみ要素
3.砂漠や雪国などさまざまなステージ
4.島を購入→依頼達成→魔王を倒す

 と、結構いい感じでした。

{magclick}
/*========================================================*/
 今回のお題  << テンプレート木構造1 概要 >>
/*========================================================*/

 あゆしゃはこれまで、マクロを使って木構造を作成し、実際に
それを使用してきました。

 しかし最近になってテンプレートを見直すこととなり、考えた
結果、

★木構造をテンプレートで書き直そう

 という結論に達しました。

 しかし。

 使い勝手が最も問題です。

 マクロ版木構造(TreeMaster.h)の場合、

struct tree_t
{
    DEF_PCHTREE_ITEM( tree_t );
} *tree;
DEF_PCHTREE_FUNCS( tree_t, tree );

 と宣言し、

add_tree( "こんな" );
add_tree( "感じ" );
tree_t* pt = find_tree( "感じ" );

 という感じで使用します。

 変数1つに対して専用の関数群をマクロによって作るのです。

 それによって関数名称が非常に明確になります。

 定義も(なるべく)簡単で、構造体の改造も簡単です。

 テンプレートにしたときも、これらのお手軽さが残るように
設計したいものです。

/*========================================================*/

 というわけで、実際に使用する場合には、マクロ版木構造と同じ
記述でできるようにしましょう。

 インターフェースを通して、最終的にはクラスの関数を呼ぶ
わけです。

#define DEF_TREE_FUNCS( type, key_type, data ) \
    type* add_##data( key_type key ) { \
        return CTree<key_type>::add( data, key_type key ); \
    }

 という感じで、マクロを使って呼び出しを隠蔽すれば、同じ
使用方法で利用できます。

 ・・・が、少々疑問ですね。

 やっぱり、テンプレートなので、オブジェクトっぽく、

tree_t* pt = data.add( "追加" );

 としたほうがいいでしょうか。

 うーん、この方がいいのかなぁ。。

/*========================================================*/

 じゃあ、そうしましょうか(軽)。

 そうする場合、上記のdataは管理オブジェクトであり、内部に
tree_t*の木構造を持っている形になります。

 続く

{magclick}
/*========================================================*/
 さいごに
/*========================================================*/

 今後の予定表です。

済 CImageサンプルの説明(していなかった?)
済 ヒステリシス1 ヒステリシスとは座標変換
済 ヒステリシス2 ヒステリシスとは状態遷移
済 ヒステリシス3 ヒステリシスとはファジィ
済 ヒステリシス4 テンプレートで作成しよう
済 ヒステリシス5 名前空間にまとめよう
済 テンプレート木構造1 TreeMasterをテンプレートに
第559回 テンプレート木構造2 クラス設計
第560回 テンプレート木構造3 追加、検索
第561回 テンプレート木構造4 ソート、left検索
第562回 テンプレート木構造5 マクロ定義
第563回 ガベージコレクタ1 テンプレートの隠蔽
第564回 ガベージコレクタ2 ユーザ設計
第565回 ガベージコレクタ3 クラス設計
第566回 ガベージコレクタ4 登録、削除処理
第567回 ガベージコレクタ5 Attach、Detachの処理
第568回 キャラエディッタ1 ソフトの説明

 あくまでも予定です。

{magclick}
/*========================================================*/
 次回予告
/*========================================================*/

 次回は5月11日(水曜日)に、第559回をお送りします。
 お題は「テンプレート木構造2 定義」

 お楽しみに!

/*========================================================*/
 最後の決り文句
/*========================================================*/
 このメールマガジンは、まぐまぐさんから発行しています。
 このメールマガジンを解除したい場合は、まぐまぐさんをご利用
ください。このメルマガのまぐまぐアイディーは最後にあります。
 このメールマガジンには広告が挿入されていますか?
 このメールマガジンの内容に文面の引用はありませんか?
 めーらっくすの場合はめーらっくすの利用方に従ってください。
 このメールマガジンの内容の、転用、流用、宣伝、リンク、
数えてみたら、10連休でした なんて大歓迎です。

{magclick}
/*========================================================*/
 
/*========================================================*/

発行者 あゆしゃ

ホームページ::あゆしゃの世界
http://ayusya.hp.infoseek.co.jp/

ご意見・ご感想・ご質問メール
mailto:ayusya@flamenco.plala.or.jp

まぐまぐ::アイディー
0000020674

まぐまぐ::登録と解除
http://www.mag2.com/m/0000020674.htm

まぐまぐ::バックナンバー
http://jazz.tegami.com/backnumber/frame.cgi?id=0000020674

めーらっくす::アイディー
MM3E1AEE285AB4F

めーらっくす::登録と解除
http://www.mailux.com/mm_dsp.php?mm_id=MM3E1AEE285AB4F 

めーらっくす::バックナンバー★最近のものならこちらが便利★
http://www.mailux.com/mm_bno_list.php?mm_id=MM3E1AEE285AB4F

ブラウザの閉じるボタンで閉じてください。