可以說我有一堂Foo。它包含一個Foo類型的向量。如何編寫一個遍歷FOO矢量進行迭代,並通過子載體不斷迭代,直到我們的載體達到的水平,爲空如何遍歷矢量中的所有子矢量?
class Foo
{
Foo();
std::vector<Foo> foos;
}
我可以做到這一點通過迭代它,卻怎麼也我遞歸地遍歷原始向量中的foo對象中的向量,直到我達到向量爲空的級別?
Foo f;
if(!f->foos.empty())
{
std::vector<Foo>::const_iterator itr;
for (itr = f.foos.begin(); itr!=f.foos.end(); ++itr)
{
}
}
如果Foo有一個Foos向量,那麼由於那裏的遞歸性質,你會得到一個堆棧溢出。你確定它不是Bar的矢量嗎? –
@ChristopherBales是正確的,這個DataStructure實際上實現了一個Tree ... – Exceptyon
發佈的代碼是非法的,並且不能用g ++和通常的選項(包括'-D_GLIBCXX_CONCEPT_CHECKS -D_GLIBCXX_DEBUG -D_GLIBCXX_DEBUG_PEDANTIC'進行編譯,這會變成很多未定義的行爲轉化爲硬錯誤)。 –