データに最も適切な構造を選択するのに苦労しています。説明は次のとおりです。
私は実際に学校向けのゲームプロジェクトに取り組んでいます。これは、C ++でのボンバーマンのようなゲームです。ボム、ボックス、プレイヤー、壁を含むマップ オブジェクトを設計しています。マップは 2D です。既に次のタイプのコンテナが 2 つあります。
std::unordered_map<int, std::unordered_map<int, AEntity*> > *UMap;
1 つは壁を含み、もう 1 つは破壊可能なオブジェクト (爆弾、ボックス) を含みます。この選択についてはすでにここで説明しました -> unsorted_map の選択。これは主にアクセス時間を短縮するためであり、マップのボックスごとに 1 つの要素しか存在できないためです。
タイトルが示すように、プレーヤーのデータ コンテナーの選択に問題があります。1 つのマップ ボックスに複数のプレーヤーが存在する可能性があるため、unordered_maps は使用できません。
初めて、エンティティ情報 (座標) を含む sorted with を使用するつもりでしたが、コーディング中std::list<AEntity*>
にstd::sorted
AEntity
playerOn(const int x, const int y);
関数私はそれが悪い選択であることがわかりました。二分法を使用して、指定されたボックスにいるプレーヤーを十分に速く取得することはできません。このボックスのプレーヤーがいない場合、時間の無駄です。
(AEntity)Player をすばやく取得できるようにするには、どのように保存すればよいですか?
(厄介なことに、大きなマップでは一度に 500 人以上のプレイヤーがいる可能性があるため、最適化を探しています)
私は脳汁が不足しています。今後ともご回答よろしくお願いいたします。
私の問題について編集
これは主に、プレーヤーの std::list 全体を調べて、box(x, y) に誰かがいるかどうかを調べる別の解決策があるかどうかを知りたいためです。遅くて最適化されていないように見えますが、これを行う別の方法がわかりません。(必要に応じてコンテナの種類を変更できます)