繁体   English   中英

C ++中的多维数组?

[英]Multidimensional array in C++?

今天,我有一个关于在多维数组中存储对象/结构或其他值的一般问题。

实际情况如下,但是我可能在许多其他地方也需要类似的解决方案,这就是为什么我想问您有关此问题的最佳做法。

假设我们有一个侧面滚动游戏。 现在,我需要以某种二维数组存储有关世界细胞的信息,其中0:0是原始位置。 在游戏开始时,我产生了一个很小的区域,例如-10:-5至10:5。 玩家可以左右移动(有时还可以上下移动),所以当他到达世界边缘时,我必须生成更多的世界信息。 现在我的问题是:我应该如何存储一个极端变化的二维数组? 是否有关于如何执行此操作的最佳实践? 你会怎么做?

再次感谢你的帮助!

不要将其存储为数组,而应使用包含坐标和值的结构。

然后将这些对象存储在一个更智能的结构中,即双端队列,列表或树,具体取决于如何搜索它们。

解决方案1 :使用size == dimension1*dimension2*dimension3*.... 1d数组,并像这样模拟多维数组。 您将必须编写自己的调整大小代码(应该很容易)
解决方案2 :使用稀疏数组。 将执行std::map<Coordinate, Value>
解决方案3Boost.MultiArray
解决方案#4 :不要将世界存储为N维数组。 将对象存储为列表/双端队列/任何内容,然后使用BSP树,八叉树,扫描和修剪或空间分区快速在可见区域中定位对象。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM