qosd: добавлены итераторы по узлам
This commit is contained in:
@@ -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>>;
|
||||
}
|
||||
Reference in New Issue
Block a user