qosd: добавлены итераторы по узлам

This commit is contained in:
2025-08-01 19:40:48 +07:00
committed by Сергей Маринкевич
parent 5df05f703a
commit 79c9961388
8 changed files with 208 additions and 16 deletions
+27
View File
@@ -0,0 +1,27 @@
#pragma once
#include "ifaces/INode.h"
#include "iterators/DFSIterator.h"
#include "iterators/BFSIterator.h"
namespace traversal {
/// \brief Фабрика итераторов узлов дерева.
/// \tparam T Тип алгоритма для обхода дерева.
/// Конструирует итерируемый объект с заданным алгоритмом обхода. Например, в ширину
/// или глубину.
template<typename Policy>
class Traversal {
INode* start;
public:
explicit Traversal(INode* start) : start(start) {}
explicit Traversal(NodePtr start) : start(start.get()) {}
Policy begin() const { return Policy(start); }
Policy end() const { return Policy(nullptr); }
};
using DFS = Traversal<DFSIterator<INode>>;
using BFS = Traversal<BFSIterator<INode>>;
}