嘿!我在做这个项目,现在我想:C++:遍历矢量向量
- 创建一些对象,并把它们存储在载体,其获取存储在另一个向量V
- 迭代通过载体内V
- 遍历各个向量中的对象
无论如何,我只是在网上搜索,并且我穿过了stl for_each函数。它看起来很整洁,但我遇到了问题。我想以这种方式来使用它:
for_each(V.begin(), V.end(), iterateThroughSmallVectors);
的iterateThroug ....只是不传递给它的矢量相同..
现在我得到一个奇怪的“矢量迭代器不兼容“运行时错误。我已经看过它,并找不到任何有用的输入..
我不知道它是否有帮助,但V是一个私人载体<>存储在类A,它有一个访问者,我试图做的B类来遍历它:
A->getV().begin(), A->getV().end(), etc..
任何人有什么事情的任何想法?
编辑:好的,所以我认为这是最好只张贴代码,并在问题可能arrising ...
getTiles在gameState.h:
vector<vector<tile*>> getTiles();
在主回路的for_each的.cpp:
for_each(currState->getTiles().begin(),currState->getTiles().end(), drawTiles);
.
.
void drawTiles(vector<tile*> row)
{
for_each(row.begin(), row.end(), dTile);
}
void dTile(tile *t)
{
t->draw();
}
创建载体:
int tp = -1;
int bCounter = 0;
int wCounter = 0;
for (int i = 0; i < 8; i++)
{
vector<tile*> row(8);
for (int j = 0; j < 8; j++)
{
tile *t = new tile(tp, (i+(SIDELENGTH/2))*SIDELENGTH,
(j+(SIDELENGTH/2))*SIDELENGTH);
row.push_back(t);
tp *= -1;
}
currState->setTiles(row);
tp *= -1;
}
,只是在情况下,它可能是相关的:
void gameState::setTiles(vector<tile*> val)
{
tiles.push_back(val);
}
一样容易发现,现在这个问题?我希望如此...如果你发现我可能做的任何愚蠢的事情,请让我知道,我对C++很陌生,指针和引用仍然让我感到困惑。
编辑2:谢谢你,完美的工作......对于这个问题,现在看来我有一个问题,创建的瓷砖和stroing他们在行向量..它似乎即使通过矢量是创造并传递正确的,是被认为是瓷砖在它不是(他们之后失去的:
for (int j = 0; j < 8; j++)
{
tile *t = new tile(tp, (i+(SIDELENGTH/2))*SIDELENGTH,
(j+(SIDELENGTH/2))*SIDELENGTH);
row.push_back(t);
tp *= -1;
}
循环如果你们有关于解决这个什么好的想法欢迎您的帮助我;)同时,我会一直试图修复它
我认为你需要发布确切的代码,特别是标记你正在碰到这个运行时错误的行。 – 2009-11-27 21:21:37