並び順

いいかげんにマウスジェスチャの設定を付けようと考えた。
まあ設定保存形式なんかは Y901 の時にやっていたのですぐ決まるわな。
実装部分だけなら連想配列を使って半日掛からず作れた。
wstring と int をペアで格納してと。

20080320.JPG

困ったぞ。
連想配列(つまり std::map)って勝手にソートしちゃうんだね。
検索効率を考えると「そりゃそうだ」なんですけど…

実はカスタマイズ部分は順番という概念を消したいのよね。

いわゆる配列や TList なんかを使うと整数という順番が決まる。
その整数という順番を利用してアクセスするのが普通、ココが落とし穴。
真ん中に何か追加しようとするとソレ以降の整数という順番が変わってしまう。
結果最後尾に追加しか方法が無くなって違和感のある列のできあがり。

と、Pallepoli のキーカスタマイズを拡張しようとしたときに困ったので。
一端順番を決めて作ってしまうと後での追加は最後尾にしかできないわけです。
後でどうにでも配置できるようにするには順番を使わないという方法しかない。

それなら連想配列だ!架空の順番を付け取り出し時に好きに並べればイイ!

とやってみたのですが…今度は全自動ソートという魔物がいた。
これではユーザーが設定で並べた順番さえ勝手にソートされてしまう。
インターフェイス部分を作ろうとしてガックリしてしまった。
開発者側の問題は解決するがこうなるか、凡庸させるにはキツイ。

あーあ、せっかくクラスを作ったのに、さてどうしよう。

又自分で最初から作るしかないっぽい。
2つの動的配列か vector を同期させて片方の値をキーと仮定させて…
ってエラくレスポンスの遅いリストになりそうな雰囲気だ…
まあ今時のパソコンならそれでもいいんじゃないかとか…