【发布时间】:2019-05-04 19:18:05
【问题描述】:
我的程序遇到了一个绊脚石。我正在用 C++ 编程并使用 OpenGL 进行图形处理。我正在寻找用网格划分空间(用二维数组表示 - grid[rows][cols])。网格在每个索引处都有“单元格”。
在此网格内和每个 INDEX 位置,即网格 [0] [0],我希望在对象 ID(int 值)移动到每个网格单元格时收集它们的列表。索引位置 grid[0][0] 的列表应该随着屏幕上的移动对象实时/动态更新。
我想检索对象 ID,因为它们会填充列表以供稍后进行碰撞检查。
作为视觉效果应该如下:
网格数组
+[0][0] --> 列表[]
+[0][1] --> 列表[]
+[0][2] --> 列表[]
+[0][3] --> 列表[]
+[1][0] --> 列表[]
+[1][1] --> 列表[] ...等等
有没有办法在 C++ 中做到这一点? Java 似乎能够根据需要在数组点内创建新数组……一定有办法吗?
哈希表、链表已经超出我的想象……但如果我需要知道它们,请告诉我,我会更详细地研究它们…… 提前谢谢了。
【问题讨论】:
-
std::vector<std::vector<std::list<ID>>>什么的? -
也许这是少数情况之一,
std::vector<int>[][]是合适的 -
网格的尺寸是固定的还是动态的?
-
你考虑过空间散列吗?这是“将空间划分为网格并检查每个单元格中的碰撞”的常用方法......但如果你想从二维数组开始,那很好。
-
@user463035818 - 网格是固定大小的,等于 10 x 10
标签: c++ arrays list multidimensional-array grid-search