我正在使用二维数组作为我正在制作的棋盘游戏的棋盘。成员是指向“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/