映射映射与std::对作为密钥相比有什么优势

What are the advantages of a map of maps vs a std::pair as a key

本文关键字:映射 什么 std 密钥      更新时间:2023-10-16

以下制作用于表示二维网格的地图的方法有哪些优点和缺点。网格应该可以在任何时候填充,而不需要为整个事情分配内存,这就是为什么我不只是使用2d数组的原因。

std::map<int, std::map<int, Tile*>* >* tiles;
std::map<std::pair<int, int>, Tile*>* tiles;

或者,如果你还有更好的主意,请告诉我。如果这是一个经常被问到的问题,我很抱歉。

它(显然)是一种不同的数据结构,取决于您如何访问它

第一个更像是一个二级树结构。再次将x坐标映射到多个y坐标映射到几个瓦片。这听起来可能有点不适合你的问题。

第二种方法不允许您获取特定x坐标的所有元素(或者您可以怎么称呼它)。你可能根本不需要这个?

如果您需要将(x,y)坐标映射到tile,第二种方法可能可以。

为什么不使用向量的向量,std::vector<std::vector>?

除非你的网格是稀疏的(不是网格中的每个元素都有Tile),并且你想节省内存,否则会更好。如果速度是问题的话,使用向量的访问时间会更好,因为std::map使用tress作为底层结构。