我想弄清楚如何反向迭代,並通過這個或者至少調用一個方法來反向。遍歷樹遍歷
這是它是如何工作的。
小工具有一個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