効率的な 2d ベクトルを実装する正しい方法は何ですか? Item オブジェクトのセットを 2 次元コレクションに格納する必要があります。これは、反復処理が速く (最も重要)、要素の検索も高速です。
次のように宣言されたポインターの 2d ベクトルがあります。
std::vector<std::vector<Item*>> * items;
コンストラクターでは、次のようにインスタンス化します。
items = new std::vector<std::vector<Item*>>();
items->resize(10, std::vector<Item*>(10, new Item()));
アイテムにアクセスするためのメソッドを (正しく) 実装するにはどうすればよいですか? 例えば:
items[3][4] = new Item();
AddItem(Item *& item, int x, int y)
{
items[x][y] = item;
}
ポインターを使用する理由は、パフォーマンスを向上させるためです。これにより、参照によって物事を渡すことができます。
これについてもっと良い方法がある場合は、説明してください。ただし、ベクターを正しく使用する方法にはまだ興味があります。
編集: 明確にするために、これは単純なゲームでの在庫管理用のクラスの一部です。セット 10x10 ベクトルは、セット サイズである在庫グリッドを表します。Item クラスには、アイテム タイプ、リソース マネージャー内の画像へのポインター、スタック サイズなどが含まれます。
このクラスは反復され、画像ポインターを使用してフレームごとにインベントリ全体をレンダリングするために使用されるため、私のポインターの使用はパフォーマンスを改善するためのものでした。