• ベストアンサー

CMapのGetNextAssocのアクセスについ

マップの仕組みについてよく理解できていないので、どなたか教えてください。 CMapのGetNextAssocの説明では、アクセス順序は不定とありますが、これはメモリの状態等によりアクセス順序が異なってくるということなのでしょうか? キーとValueの組み合わせが全て同じであれば順序はかわらない、と考えてよろしいでしょうか?

質問者が選んだベストアンサー

  • ベストアンサー
回答No.1

MFCのCMapはSTLのstd::mapのような二分木ではなく、ハッシュテーブルで実装された辞書なので、ハッシュ関数の定義が変われば内部での配置は変わります。 ハッシュ関数を1つだけに定めても、ハッシュ値が同じになるようなキーが2つ以上格納される場合は、それらを挿入する順序によってリスト内の配置が換わってしまうので、GetNextAssoc() が返す順序は同じにはならないでしょう。 CMapでは「順序が決まっている」という仮定をすべきではないです。

skawase
質問者

お礼

ご回答ありがとうございます。 そうなんですね。。 勉強になりました。 おちついてから自分でも仕組みについて詳しく勉強してみます。 ありがとうございました。

すると、全ての回答が全文表示されます。

関連するQ&A