我想弄清楚如何反向迭代,并通过这个或者至少调用一个方法来反向。遍历树遍历
这是它是如何工作的。
小工具有一个std :: vector的Widget *,它是那个控件的子元素。子向量是z排序的,这意味着子[0]在子[1]后面(按渲染顺序)。每个控件都有一个指向其父项的指针,除了父项为NULL的根(虚拟)控件外。
对于我的渲染,我需要那种做楼梯排序迭代(从后到前)的前:
root->child[0];
root->child[0]->child[0];
root->child[0]->child[1];
root->child[1];
root->child[1]->child[0];
root->child[1]->child[1];
但是发现这小工具是鼠标下,我必须做我的矩形点从前到后的测试:
root->child[9]->child[1];
root->child[9]->child[0];
root->child[9];
root->child[8]->child[2];
root->child[8]->child[1];
root->child[8]->child[0];
root->child[8];
我需要什么样的迭代才能有效地完成上述两种类型的迭代? (从前到后)。
感谢
我不知道我理解的问题下。这里没有链接列表;你有'std :: vector's,你可以在任何方向上迭代。 – 2010-10-15 23:36:09
@Oli查尔斯沃思但每个std :: vector有孩子,也有孩子,你不能访问某个孩子,而无需迭代父亲因此链表, – jmasterx 2010-10-15 23:37:42
我认为可能需要一些类型的递归,像while(children.size ()> 0) – jmasterx 2010-10-15 23:39:15