bitrl & cuberl Documentation
Simulation engine for reinforcement learning agents
Loading...
Searching...
No Matches
filtered_iterator.h
Go to the documentation of this file.
1#ifndef FILTERED_ITERATOR_H
2#define FILTERED_ITERATOR_H
3
4#include "boost/iterator/filter_iterator.hpp"
5
6namespace bitrl
7{
8
12template <typename PREDICATE, typename TYPE> class FilteredIterator
13{
14
15 public:
16 typedef PREDICATE predicate;
17 typedef TYPE iterator_type;
18 typedef typename boost::filter_iterator<PREDICATE, TYPE> iterator_t;
19 typedef typename iterator_t::value_type value_type;
20
23
27
31
34
36 virtual ~FilteredIterator() {}
37
40
43
45 iterator_t get_iterator() { return it_; }
46
48 value_type operator*() const { return *it_; }
49
50 template <typename Pred, typename Type>
51 friend bool operator==(const FilteredIterator<Pred, Type> &lhs,
53
54 private:
56 iterator_t it_;
57};
58
59template <typename PREDICATE, typename TYPE>
63
64template <typename PREDICATE, typename TYPE>
69 : it_(boost::make_filter_iterator(p, begin, end))
70{
71}
72
73template <typename PREDICATE, typename TYPE>
77 : it_(boost::make_filter_iterator(PREDICATE(), begin, end))
78{
79}
80
81template <typename PREDICATE, typename TYPE>
86
87template <typename PREDICATE, typename TYPE>
93
94template <typename PREDICATE, typename TYPE>
101
102template <typename Pred, typename Type>
105{
106 return lhs.it_ == rhs.it_;
107}
108
109template <typename Pred, typename Type>
112{
113
114 return !(lhs == rhs);
115}
116
117} // namespace bitrl
118#endif
Simple wrapper to boost::filter_iterator.
Definition filtered_iterator.h:13
iterator_t get_iterator()
Return the underlying boost iterator.
Definition filtered_iterator.h:45
iterator_t::value_type value_type
Definition filtered_iterator.h:19
FilteredIterator(iterator_type begin, iterator_type end)
construct by passing in the predicate and the range over which we iterate
boost::filter_iterator< PREDICATE, TYPE > iterator_t
Definition filtered_iterator.h:18
friend bool operator==(const FilteredIterator< Pred, Type > &lhs, const FilteredIterator< Pred, Type > &rhs)
Definition filtered_iterator.h:103
value_type operator*() const
Dereference the iterator.
Definition filtered_iterator.h:48
TYPE iterator_type
Definition filtered_iterator.h:17
FilteredIterator(predicate p, iterator_type begin, iterator_type end)
construct by passing in the predicate and the range over which we iterate
virtual ~FilteredIterator()
Destructor.
Definition filtered_iterator.h:36
FilteredIterator & operator++()
op++ simply increment the boost::filter_iterator
Definition filtered_iterator.h:88
PREDICATE predicate
Definition filtered_iterator.h:16
FilteredIterator()
default constructor
Definition filtered_iterator.h:60
Definition bitrl_consts.h:14
bool operator!=(const FilteredIterator< Pred, Type > &lhs, const FilteredIterator< Pred, Type > &rhs)
Definition filtered_iterator.h:110
bool operator==(const FilteredIterator< Pred, Type > &lhs, const FilteredIterator< Pred, Type > &rhs)
Definition filtered_iterator.h:103