76 template <
typename OutPutContainer>
79 void *
operator new(size_t);
80 void operator delete(
void *);
93 using NodeVector = std::vector<std::pair<Iterator,Point>>;
94 using childNodeArray = std::array<Node*,8>;
97 std::array<std::pair<Iterator,Point>,
105 Node(
const NodeVector& input_values);
106 Node(
const NodeVector& input_values,
108 size_t current_depth);
110 Node(
const Node&) =
delete;
112 template <
typename OutPutContainer>
114 OutPutContainer& resultIndices)
const;
120 void init_max_depth_leaf(
const NodeVector& input_values);
121 void init_leaf(
const NodeVector& input_values);
123 const NodeVector& input_values,
124 size_t current_depth);
127 using wrapped_type =
typename NodeVector::const_iterator;
129 InnerIterator(wrapped_type it):it__(it)
131 Point operator*()
const
133 return ((*it__).second);
135 InnerIterator& operator++()
140 InnerIterator operator++(
G4int)
142 InnerIterator other = *
this;
147 G4bool operator==(
const InnerIterator& rhs)
const
149 return this->it__ == rhs.it__;
152 G4bool operator!=(
const InnerIterator& rhs)
const
154 return !operator==(rhs);