繁体   English   中英

C ++ 2D矢量地图

[英]C++ 2D vector maps

首先,我知道这个问题已经问了很多,但是我需要澄清和理解一些事情。 另外,我仍在学习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是图块,空间是空气图块,并且未分配点。 不是网格!

我也对数组指针的工作方式感到困惑。

很抱歉在这里成为菜鸟,我仍在努力解决问题。

任何帮助将不胜感激!

如果您需要一个简单的可调整大小的矩阵类,我肯定会选择向量的向量。 您总是可以自己将其包装到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的 Boost BLAS功能。

暂无
暂无

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

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