映射映射与std::对作为密钥相比有什么优势
What are the advantages of a map of maps vs a std::pair as a key
以下制作用于表示二维网格的地图的方法有哪些优点和缺点。网格应该可以在任何时候填充,而不需要为整个事情分配内存,这就是为什么我不只是使用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作为底层结构。
相关文章:
- "自动"隐式映射到什么?
- 在 C++ 中,映射相对于堆的优势是什么?
- 什么是最快的解决方案,用于读/写入哈希映射
- 在 c++ 中,跨向量的函子映射等效于什么
- 如果您用新版本覆盖共享库(当前由程序映射)会发生什么
- 检查是否存在多维映射的元素的最快方法是什么
- 这些会做什么(映射[x] [y] = 2;,map [x] [y] = 3;,以及map [x] [y] = 4;在下面
- 使用静态映射在C++中缓存数据的推荐方法是什么
- 在插入时同时迭代一个映射,这在什么方面是不安全的
- 修改映射中包含的类的正确方法是什么
- 通常用于将输入映射到显示器的数据结构是什么
- 在类映射中,当我们有迭代器时,constiterator的必要性是什么
- 在没有c++11的情况下,擦除映射中最后插入的元素的正确方法是什么
- BOOST中的属性映射是什么
- 我的 lambda 表达式进行映射键比较有什么问题?
- 我什么时候应该首选写入组合 CUDA 分配的映射主机内存
- 什么是 C++ 中的映射函数
- 对于空映射,map::begin() 的返回值是什么?
- unordered_map:如果键不在映射中,要返回什么
- 将迭代器取消引用到映射或 C++ 中的某些其他复合类型的类型是什么