プログラム メモリに無限の 3D ラスター マップを実装する必要があります。マップは [0;0;0] から始まる場合とそうでない場合があります。マップの Y 座標は 255 に制限されており、他の座標は無限である可能性があります。(はい、これは Minecraft のマップだと思われるかもしれません)シンプルなメソッド
を持つクラスを作成する必要があります。つまり、データの読み取りと書き込みの両方ができる必要があります。また、ブロックを削除してメモリを解放できるようにしたいと考えています。
この目的のために何を使用する必要がありますか? 最良の解決策は、そのような構造を持つテーブルになると思います:McMap::getBlock(int x, short y, int z)
McMap::setBlock(int x, short y, int z)
int x|short y|int z|int block id|other values...
-----+-------+-----+------------+---------------
55| 21| 666| 1|
しかし、実際の MySql を使用せずに C++ でこれを実装するにはどうすればよいでしょうか (これはやり過ぎです)。また、プログラムの終了時にマップを保持したくないため、データをプログラムのメモリ内に配置したいと考えています。
もう一度、マップは無限であるため、座標は何でもよいと考えてください。また、非常に離れたポイントがマッピングされる可能性があることも忘れないでください。
また、注意すべき非常に重要なこと: X、Y、および Z 座標でブロックを取得する効果的な方法が必要です。すべてのブロックを調べて、そのうちの 1 つを見つける必要はありません。ブーストライブラリ
は既に含まれています。