c++ - 在二维指针 vector 中插入列的正确方法是什么?

标签 c++

我正在使用二维数组作为我正在制作的棋盘游戏的棋盘。成员是指向“Tile”类型对象的指针。索引是 x 和 y,分别表示水平和垂直位置。 在 Board 类中,它看起来像这样。

vector<vector<Tile*> > playGround;

问题在于,随着游戏的进行,方 block 会添加到 playGround,并且 vector 必须能够扩展,以防新方 block 的位置需要这样做。我一直在尝试在顶部添加行,并在左侧添加列。我试过使用 insert() 函数,这就是我的问题所在。

现在我的代码是这样的:

void Board::addRowTop()
{
    Tile* t;
    int i = 0;
    maxY++;
    for ( ; i < maxX ; i++ )
        playGround[i].insert(0, t);
}

不要介意 maxX 和 maxY 变量;它们与手头的主题无关。问题是:insert(0, t) 显然不起作用,因为“t”不是函数期望的数据类型。

我的问题很简单:insert() 的第二个参数究竟需要什么才能解决这个问题?我在谷歌上四处寻找,但似乎找不到正确的答案。

非常感谢。

最佳答案

我不认为是 't' 参数导致了这个函数:playGround[i​​] 是一个 std::vector<Tile *> ,因此您应该能够插入 Tile*s(尽管请告诉我您首先要初始化 't' - 至少要初始化为 NULL 或 0!)。

问题是插入的第一个参数必须是一个迭代器。尝试:

playGround[i].insert(playGround[i].begin(), t);

-哑光

关于c++ - 在二维指针 vector 中插入列的正确方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4318581/

相关文章:

c++ - 将 char * 与字符串文字进行比较的问题

c++ - 如何使用 boost asio 读取固定大小的数据包?

c++ - Qt3D骨骼动画

c++ - VS 2010 - 将 Win32 应用程序向导作为 .html 文件打开

c++ - 如何将引用类型转换为值类型?

C++ std::stringstream 似乎导致线程在 SunOS 下挂起或死亡

c++ - 使用 Winsock SPI(LSP) 访问浏览器套接字

c++ - Consexpr 与宏

c++ - 结构给出不正确的输出

c++ - 多态——基类私有(private)成员的子类共享