Вы столкнулись с забавными частями C ++ - используя языковые конструкции в синтаксически правильных, но трудных для человека методах анализа.
while (goDown(myIterator));
Это будет "goDown (myIterator)", пока не вернется false. Затем он продолжит цикл. Это ничего не делает, но это нормально, потому что функция goDown делает работу.
for (; !atEnd(myIterator); goNext(myIterator))
Это ничего не инициализирует, но проверяет, что это не atEnd (myIterator) - пока это не так, оно будет идти далее (myIterator). Его также можно записать как цикл while, чтобы его было легче понять:
while(!atEnd(myIterator))
{
goNext(myIterator));
}
Так код будет:
- Вниз, пока goDown () не вернет false - это означает, что goDown каждый раз модифицирует myIterator
- goNext (), пока не будет в конце ()