30 class KdTreeRangeIterator
36 using iterator_category = std::input_iterator_tag;
37 using difference_type = std::ptrdiff_t;
38 using value_type = Index;
39 using pointer = Index*;
40 using reference =
const Index&;
42 using Scalar =
typename DataPoint::Scalar;
43 using QueryType = QueryT_;
45 PONCA_MULTIARCH
inline KdTreeRangeIterator() =
default;
46 PONCA_MULTIARCH
inline KdTreeRangeIterator(QueryType* query, Index index = -1)
47 : m_query(query), m_index(index), m_start(0), m_end(0)
52 PONCA_MULTIARCH
inline bool operator!=(
const KdTreeRangeIterator& other)
const
54 return m_index != other.m_index;
58 PONCA_MULTIARCH
inline bool operator==(
const KdTreeRangeIterator& other)
const
60 return m_index == other.m_index;
67 m_query->advance(*
this);
73 PONCA_MULTIARCH
inline KdTreeRangeIterator
operator++(
int)
75 KdTreeRangeIterator tmp = *
this;
76 m_query->advance(*
this);
81 PONCA_MULTIARCH
inline reference
operator*()
const {
return const_cast<reference
>(m_index); }
84 QueryType* m_query{
nullptr};