У меня есть недвоичные древовидные структуры, такие как:
struct Node
{
Node* pa_;
std::vector<Node*> children_;
std::vector<Node*> GetLeaves()
};
По листьям дерева я понимаю узлы дерева без дочерних элементов.Метод, который обеспечивает сбор листьев дерева, выглядит следующим образом:
std::vector<Node*> Node::GetLeaves()
{
std::vector<Node*> ret;
if(!children_.size())
{
ret.push_back(this);
}
else
{
for (auto child : children_)
{
auto child_leaves = child->GetLeaves()
ret.insert( ret.end(),
child_leaves.begin(),
child_leaves.end() );
}
}
return std::move(ret);
}
Не скажем, что у всего дерева может быть сотни листьев.
Использование вектора в качестве контейнера для листьев означает, что при вставке в возвращаемую коллекцию происходит много перераспределения памяти.
Вопрос: использование std :: list вместо std :: vector нежелательно?
спасибо заранее