CMap Class

人生初のCMapとの出会いに感謝して、
訳がわからなかったので、勉強。

辞書クラスで、一意のキーに対して、ひとつの値が割り当てられる。

例えば、

キー   値
斉藤   160cm
佐々木  170cm
小池   165cm
・    ・
・    ・
・    ・

このキーと値の集合体に、マップの名前が付いていて、

一意のキーを指定すれば、そのキーに割り当てられた値を取得できる。ということらしい。
配列の番号の部分が、任意に設定できたり、文字列に出来たりするのか?

キーに斉藤と入れれば、入れ物に160という値が入ってくる。ほほう

とりあえず、調べたやつのキーはintかCStringだったけども、、、

CMapの定義のしかた

CMap < class KEY, class ARG_KEY, class VALUE, class ARG_VALUE > mapSample(マップの名前);

class KEY    キーのクラス(IN)
class ARG_KEY  キーへの参照(OUT)(よくわからんから聞こう)
class VALUE   値のクラス(IN)
class ARG_VALUE 値の参照(OUT)

要素追加のときに使うキーと値の型と
要素取得のときに使いキーの値の型と
いう風にざっくり理解した。

要素の追加のしかた
mapSample.SetAt( 一意のキー, 値 );
mapSampleという名前のマップに何個でも追加できる。

要素の取得のしかた
値の入れ物を宣言して
BOOL b = mapSample.Lookup( 一意のキー, 値の入れ物 );
BOOL値が返ってくるそうです。

Mapの中をひとつずつ参照して処理をする場合
for文でキーを指定して、ぶん回すか
POSITION pos = mapSample.GetStartPosition();
で最初の位置を指定して

while( pos ){
mapSample.GetNextAssoc( pos , キーの入れ物 , 値の入れ物);
}

で、その場所のキーと値を取得していくことが出来る。へー

ただ、pos while でぶん回したとき

マップの要素の取れてくる順番が、バラバラらしいので、

順序が必要な処理の場合は向いていないのだろうか?
そんなときは、配列に入れちゃえばいいのだろうか?

明日聞いてみよう。