2

2 次元グリッドを表すことを目的としたマップを作成する次の方法の長所と短所は何ですか。グリッドは、全体にメモリを割り当てることなく、いつでも埋めることができるはずです。そのため、2 次元配列だけを使用しませんでした。

std::map<int, std::map<int, Tile*>* >* tiles;

std::map<std::pair<int, int>, Tile*>* tiles;

または、別のより良いアイデアがあれば教えてください。よくある質問でしたら申し訳ありません。

4

2 に答える 2

2

これは (明らかに) 異なるデータ構造であり、アクセス方法によって異なります。

最初のものは、2 レベルのツリー構造に似ています。x 座標を複数の y 座標に再度複数のタイルにマップします。これは、あなたの問題には少し不適切に聞こえるかもしれません。

2 番目のものでは、特定の x 座標のすべての要素を取得することはできません (または、どのように呼んでもかまいません)。やっぱり要らないかも?

(x,y) 座標をタイルにマップする必要がある場合は、2 番目の方法で問題ない可能性があります。

于 2013-02-11T17:38:14.560 に答える
0

vector の vector 、 std::vector< std::vector > を使用しないのはなぜですか?

グリッドがまばらで (グリッド内のすべての要素がタイルを持っているわけではない)、メモリを節約したい場合を除き、より良いでしょう。std::map は基になる構造として tress を使用するため、速度が問題になる場合は、ベクトルを使用したアクセス時間の方がはるかに優れています。

于 2013-02-11T17:58:31.043 に答える