12 #include "std_types.hpp"
23 template<
class Po
intT>
24 class SortingContainer:
public std::deque<PointT *>
27 SortingContainer(): std::deque<PointT *>() {}
28 virtual ~SortingContainer() {}
30 void insert(PointT *item)
32 this->push_back(item);
37 PointT *result = this->front();
46 template<
class Po
intT,
class ClosedSetT, FlagsT flags = 0>
47 class StdAStar:
public AStar<PointT, OpenSet<PointT, SortingContainer<PointT>>, ClosedSetT, flags>
56 virtual typename AStarBase::FScoreT heuristic_cost_estimate(
const PointT *p1,
const PointT *p2)
const override
58 const typename AStarBase::FScoreT dist = AStarBase::distance(p1, p2);
63 virtual std::vector<PointT *> get_neighbours(PointT *p)
override
65 std::vector<PointT *> result;
68 result.push_back(
new PointT(p->x + 0, p->y - 1, p) );
69 result.push_back(
new PointT(p->x + 1, p->y - 1, p) );
70 result.push_back(
new PointT(p->x + 1, p->y + 0, p) );
71 result.push_back(
new PointT(p->x + 1, p->y + 1, p) );
72 result.push_back(
new PointT(p->x + 0, p->y + 1, p) );
73 result.push_back(
new PointT(p->x - 1, p->y + 1, p) );
74 result.push_back(
new PointT(p->x - 1, p->y + 0, p) );
75 result.push_back(
new PointT(p->x - 1, p->y - 1, p) );
77 return std::move(result);
Definition: std_alg.hpp:47