1 #ifndef TIL_ORDERED_ITERATOR_H_ 2 #define TIL_ORDERED_ITERATOR_H_ 14 template <
typename TIterator,
typename TOrderIterator >
16 :
public std::iterator<
17 typename std::iterator_traits<TOrderIterator>::iterator_category,
18 typename std::iterator_traits<TIterator>::value_type,
19 typename std::iterator_traits<TIterator>::difference_type,
20 typename std::iterator_traits<TIterator>::pointer,
21 typename std::iterator_traits<TIterator>::reference>
25 typedef std::iterator<
26 typename std::iterator_traits<TOrderIterator>::iterator_category,
27 typename std::iterator_traits<TIterator>::value_type,
28 typename std::iterator_traits<TIterator>::difference_type,
29 typename std::iterator_traits<TIterator>::pointer,
30 typename std::iterator_traits<TIterator>::reference>
Base;
39 , m_databegin(databegin)
40 , m_orderit(orderbegin)
46 reference
operator*() {
return *this->current_iter(); }
54 TIterator current_iter() {
return m_databegin + *m_orderit; }
64 TIterator m_databegin;
65 TOrderIterator m_orderit;
68 template <
typename TCollection,
typename TOrderIterator >
73 template <
typename TCollection,
typename TOrderIterator >
Ordered_iterator(TIterator databegin, TOrderIterator orderbegin)
Construct an Ordered_iterator from a random-access iterator on the beginning of the data and an itera...
std::iterator< typename std::iterator_traits< TOrderIterator >::iterator_category, typename std::iterator_traits< TIterator >::value_type, typename std::iterator_traits< TIterator >::difference_type, typename std::iterator_traits< TIterator >::pointer, typename std::iterator_traits< TIterator >::reference > Base
bool operator!=(const Ordered_iterator &it) const
Belongs to package Box Do not include directly, include til/Box.h instead.
Ordered_iterator< typename TCollection::iterator, TOrderIterator > ordered_iterator(TOrderIterator obegin, TCollection &coll)
Base::reference reference
Iterate through a random access container according to some predefined order.
Ordered_iterator< TIterator, TOrderIterator > Self
bool operator==(const Ordered_iterator &it) const