5#ifndef ROOT_RBinIndexMultiDimRange
6#define ROOT_RBinIndexMultiDimRange
42 if (range.GetBegin() == range.GetEnd()) {
76 using pointer =
const std::vector<RBinIndex> *;
88 const std::size_t i =
N - 1 - j;
106 for (std::size_t k = 0; k < j; k++) {
108 const std::size_t i =
N - 1 - k;
Iterator over RBinIndexMultiDimRange.
friend bool operator!=(const RIterator &lhs, const RIterator &rhs)
friend class RBinIndexMultiDimRange
RIterator(const RBinIndexMultiDimRange &multiDimRange)
std::vector< RBinIndexRange::RIterator > fIterators
The current iterators.
std::vector< RBinIndex > value_type
const std::vector< RBinIndex > & operator*() const
const std::vector< RBinIndex > * operator->() const
const RBinIndexMultiDimRange * fMultiDimRange
Pointer to the original RBinIndexMultiDimRange.
const std::vector< RBinIndex > & reference
std::vector< RBinIndex > fIndices
The current bin indices.
const std::vector< RBinIndex > * pointer
std::input_iterator_tag iterator_category
std::ptrdiff_t difference_type
RIterator operator++(int)
friend bool operator==(const RIterator &lhs, const RIterator &rhs)
bool fHasEmptyRange
Whether there is an empty range.
RBinIndexMultiDimRange()=default
Construct an invalid bin index range.
std::vector< RBinIndexRange > fRanges
The original ranges.
friend bool operator==(const RBinIndexMultiDimRange &lhs, const RBinIndexMultiDimRange &rhs)
friend bool operator!=(const RBinIndexMultiDimRange &lhs, const RBinIndexMultiDimRange &rhs)
const std::vector< RBinIndexRange > & GetRanges() const
RBinIndexMultiDimRange(std::vector< RBinIndexRange > ranges)
Construct a multidimensional range of bin indices.
Namespace for ROOT features in testing.