9 #include "AlgoIterator.hpp"
10 #include "TrIterator.hpp"
30 typedef ptrdiff_t difference_type;
33 typedef std::input_iterator_tag iterator_category;
43 { m_sum = accumulate(range); }
54 m_range = that.m_range;
64 return (m_range==that.m_range);
68 return (!
operator==(that));
78 virtual bool operator<(const TrIterator<T>& it)
const
88 return (m_range<that.m_range);
90 bool operator>(
const SumIterator& that)
const
92 return !(m_range<that.m_range);
94 bool operator<=(
const SumIterator& that)
const
96 return (!
operator>(that));
98 bool operator>=(
const SumIterator& that)
const
100 return !(m_range<that.m_range);
126 {
return m_range.
begin() < m_range.
end() ? m_range.
begin() : m_range.
end(); }
129 {
return m_range.
end() > m_range.
begin() ? m_range.
end() : m_range.
begin(); }
132 void IncrementalUpdate()
140 T old_begin_val = *(m_range.
begin());
141 T old_end_val = *(m_range.
end());
143 m_sum -= old_begin_val;
144 m_sum += old_end_val;
150 T accumulate(
const TrRange<T>& range)
153 TrIterator<T> it = range.begin();
154 while (it<range.end()) {
164 ClassDef(SumIterator,0);
TrIterator template class.
Definition: TrIterator.hpp:24
TrIterator< T > end() const
Get value of end iterator.
Definition: TrIterator.hpp:224
virtual SumIterator & operator++()
Prefixed incrementation Supports ++x style incrementing. Default implementation does nothing...
Definition: SumIterator.hpp:104
TrRange class.
Definition: TrIterator.hpp:173
virtual double operator*() const
Dereference operator.
Definition: SumIterator.hpp:123
virtual TrIterator< T > min_extent() const
Min extent To implement the minimum iterator extent for the range This default implementation returns...
Definition: SumIterator.hpp:125
TrIterator< T > begin() const
Get value of begin iterator.
Definition: TrIterator.hpp:222
Definition: AlgoIterator.hpp:12
virtual bool operator<(const TrIterator< T > &it) const
Comparison operator.
Definition: SumIterator.hpp:78
virtual TrIterator< T > max_extent() const
Max extent To implement the maximum iterator extent for the range This default implementation returns...
Definition: SumIterator.hpp:128
Abstract AlgoIterator base class.
Definition: AlgoIterator.hpp:17
Summing iterator.
Definition: SumIterator.hpp:27