VC6を再インストール、indexed_tree

突発的にVC6を再インストールしてみました。うちのVC6は、複雑なプロジェクトになってくると、デバッグビルド時に1つずつしかソースファイルがコンパイルできなくなります。2つ目以降は内部コンパイラエラーです。なぜかリリースビルドだと大丈夫です。多分テンプレート使ったヘッダとか、プリコンパイルドヘッダが悪さしてるとは思うんですが…
というわけで、その辺が解消されるかなぁと、かすかな望みを持ってインストール。ついでに、今までなぜか2つVC6共存していたのをどっちも消しました。結果は…世の中そんなに甘くないです。FileViewでソースファイルを1つずつコンパイルするという、元と同じ状態になりました。いつかは原因を究明してみたいところです。
CodeProjectの投票ではまだまだVC6人気は健在のようで(全体の3分の1程度)
http://www.codeproject.com/script/survey/detail.asp?survey=428#xx996561xx

ランダムアクセス可能なツリー構造(N分木)の需要があって、適当に実装はしたんですが、今ひとつなデザイン。下のは、最終的にこんなんに落ち着けばいいなぁという形です。現在は要素変更するたびに木を全走査するという馬鹿みたいな実装(^^;

template< typename T >
class indexed_tree{
public: // いろいろ略
  typedef unsigned int id_t;
  id_t insert( id_t parent, id_t insertAfter, const T& val );
  void remove( id_t id );
  id_t getRootID( void ) const;
  id_t getParentID( id_t id ) const;
  id_t getFirstChildID( id_t id ) const;
  id_t getNextSiblingID( id_t id ) const;
  id_t getPrevSiblingID( id_t id ) const;
  T& get( id_t id ); // const版も
  void set( id_t id, const T& val );
};

なんていうか、SDKのツリーまんまなんですけどね。アルゴリズム考えるのが面倒なので放置です。