伙计们,我有以下代码,它位于一个遍历树的大 while 循环中。这是我能得到这个例程的最快速度,但我必须使用 goto。我从根本上并不反对 goto,但如果我能避免它们,我愿意。(拜托,我不是要发动一场火焰战争。)
约束:
current=current->child()
很昂贵(它是 a ) ,shared_ptr
所以我想不惜一切代价尽量减少对该操作的使用。- 操作后
current
应该是它找到的最后一个孩子。 cnt
必须计算它遇到的每个孩子。- cnt++ 将被其他一些操作(或几个操作)替换,并且应该只出现一次:)
编码:
insideloopy:
cnt++;
if ( current->hasChild() )
{
current = current->child();
goto insideloopy;
}
编辑:对不起,最初忘记提及 cnt++ 应该只出现一次。这将是节点上的某种操作,因此应该只存在一次。我也试图避免进行另一个函数调用。