我不知道这段代码的工作方式和原因:
// 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 )
Run Code Online (Sandbox Code Playgroud)
Tom*_*ter 18
您已经遇到了C++的有趣部分 - 在语法上有效但难以为人解析的技术中使用语言结构.
while (goDown(myIterator));
Run Code Online (Sandbox Code Playgroud)
这将是"goDown(myIterator)",直到它返回false.然后它将继续进入for循环.它没有任何循环 - 但这没关系,因为goDown函数正在工作.
for (; !atEnd(myIterator); goNext(myIterator))
Run Code Online (Sandbox Code Playgroud)
这不会初始化任何东西,但测试它不是atEnd(myIterator) - 虽然它不是,但它将是goNext(myIterator).它也可以写成while循环,使其更容易理解:
while(!atEnd(myIterator))
{
goNext(myIterator));
}
Run Code Online (Sandbox Code Playgroud)
所以代码将: