C++2D矢量映射

C++ 2D vector maps

本文关键字:映射 C++2D      更新时间:2023-10-16

首先,我知道这个问题已经被问了很多次,但我需要澄清和理解一些事情。此外,我仍在学习c++,目前是从一本书和教程中学习的,所以不要苛刻:)

如何在代码中定义并修改平台生成器的2D地图?我了解基本的多维数组,但我真的不能使用它们,因为我的地图的大小会改变很多。我可以使用向量中的一个向量,但据我所知,这不再是一个矩形网格,它更像。。。

x x x x x x x x x x   
x       x . . . . .
x       x . . . . .
x x x x x x x x x x

其中x是平铺,space是空气平铺,并且不分配点。不是网格!

我还对数组的指针是如何工作的感到困惑。

很抱歉我在这里有点麻烦,我还在努力解决问题。

任何帮助都将不胜感激!

如果你需要一个简单的可调整大小的矩阵类,我肯定会选择一个向量的向量。您总是可以自己将其封装到Matrix类中(也许可以通过模板化维度/类型)

struct Tile {
    int whatever = 0;
};
int main() {
    std::vector<std::vector<Tile>> m;
    m.resize(10);
    for(auto& v : m)
        v.resize(10);
    // Print a 10x10 0-initialized matrix
    for(auto& v : m) {
        for(auto& elements : v)
            std::cout << elements.whatever << " ";
        std::cout << std::endl;
    }
}

实时示例

向量中的内存是连续分配的,没有"洞"。无论如何,如果调整内部向量的大小,则必须保持内部向量的维度同步。

如果你认为这对你的想法来说太多了,请使用Matrix增强BLAS功能。