Эй, там! Я делаю этот проект и сейчас я пытаюсь:C++: Итерация через вектор векторов
- создать некоторые объекты и хранить их в векторах, которые откладываются в другом векторе V
- итерации через векторы внутри V
- итерации через объекты внутри отдельных векторов
Во всяком случае, я просто искал в Интернете, и я пришел через функцию stl for_each. Это кажется довольно опрятным, но у меня проблемы с ним. Я пытаюсь использовать его таким образом:
for_each(V.begin(), V.end(), iterateThroughSmallVectors);
iterateThroug .... просто делает то же самое на вектор переданного ему ..
Теперь я получаю странные «Вектор итераторы несовместимая "ошибка времени выполнения. Я посмотрел на него и не нашел никакого полезного ввода.
Я не знаю, помогает ли он, но V является частным вектором <> хранится в классе A, который имеет аксессор к нему , и я пытаюсь итерацию через него в классе B, выполнив:
A->getV().begin(), A->getV().end(), etc..
Кто есть какие-либо идеи о том, что происходит?
EDIT: Хорошо, так что я думаю, что лучше просто разместить код, и где проблемы могут быть 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++, и указатели и ссылки все еще меня путают.
EDIT2: Спасибо, ребята, которые отлично работали ... хорошо для этой проблемы, теперь, похоже, у меня возникла проблема с созданием плиток и их хождением в вектор строки. Кажется, что даже через вектор создан и проходит правильно, плитки, которые должны были быть в нем нет (они теряются после того, как:.
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;
}
петля Если какой-либо из вас есть какие-либо хорошие идеи о решении этого вы всегда можете помочь я;) Между тем, я буду продолжать пытаться исправить это
Я думаю, вам нужно будет отправить точный код и особенно отметить строку, в которой вы нажимаете эту ошибку во время выполнения. –