我不知道这段代码如何工作以及为什么工作:
// postorder dfs
Iterator< Index<String<char> >, TopDown<ParentLink<Postorder> > >::Type
myIterator(myIndex);
while (goDown(myIterator));
for (; !atEnd(myIterator); goNext(myIterator))
// do something with myIterator ( Traverse Through (Suffix)-tree )
- while 如何影响 for 循环?
- 为什么 for 循环没有初始化?
最佳答案
您已经遇到了 C++ 的有趣部分 - 在语法上有效但人类难以解析的技术中使用语言结构。
while (goDown(myIterator));
这将“goDown(myIterator)”直到它返回 false。然后它将继续进入 for 循环。它没有任何循环 - 但没关系,因为函数 goDown 正在工作。
for (; !atEnd(myIterator); goNext(myIterator))
这不会初始化任何东西,但会测试它不是 atEnd(myIterator) - 如果不是,它将 goNext(myIterator)。它也可以写成一个 while 循环,以使其更容易理解:
while(!atEnd(myIterator))
{
goNext(myIterator));
}
所以代码将:
- 一直往下走,直到 goDown() 返回 false——这意味着 goDown 每次都在修改 myIterator
- goNext() 直到 atEnd()
关于c++ - 这段c++代码在做什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1223172/