我的代碼如下避免遞歸,此功能
myParent = curreObj->getmyParent();
if(myParent != NULL && myParent->getAttrib() != "abc")
myParent=myParent->getmyParent();
return myParent;
重要提示:屬性「ABC」可以被許多人持有。這不是一個1-1的財產。所以,維護一張地圖可能是不可能的。而且我希望在我的血統中。所以,如果我維護一個multimap,從屬性我會有一個對象的列表,我將不得不循環到我的對象,這將使它成爲一個O(n)操作。我試圖讓它比O(n)小,理想情況下爲O(1),如果不是O(log n)至少。有解決方案嗎?
我想我的祖先有屬性等於某個值。如果不是,則返回NULL。
我使用Visual Studio 2013,C++。
上面的代碼做的,但我想這樣做的更好,至少可以避免遞歸。
有沒有辦法做到這一點?有沒有我可以用來完成這個數據結構?
'此功能'/'我的代碼看起來'代碼實現_什麼? (把'最近的]祖先[滿足一些謂詞]'放在更突出的位置:標題,第一句,一個/這個過程的名稱。)'避免遞歸'在我的書中,_recursion_直接或間接讀取_directly或間接更多的same_:我沒有看到你的問題。 (什麼是'血統'?) – greybeard