Files
poc-links/include/iterators/Traversal.h
T
grayhook f46e1a6d0b add iterators
New iterators can be used to iterate through Nodes.

Squashed commit of the following:

commit 602ed679631647dd1c8874b0b0145fcb09458341
Author: GRayHook <s@marinkevich.ru>
Date:   Fri Aug 1 19:36:46 2025 +0700

    fup after CR

commit 08f7b59aa7
Author: GRayHook <s@marinkevich.ru>
Date:   Fri Aug 1 19:20:48 2025 +0700

    normalize members of iterator

commit 038cbb73f4
Author: GRayHook <s@marinkevich.ru>
Date:   Fri Aug 1 18:57:08 2025 +0700

    bump

commit 0f93988fb6
Author: GRayHook <s@marinkevich.ru>
Date:   Fri Aug 1 11:32:35 2025 +0700

    tmp
2025-08-01 19:40:48 +07:00

28 lines
844 B
C++

#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>>;
}