WPILibC++  2019.3.1
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Modules Pages
wpi::filter_iterator_base< WrappedIteratorT, PredicateT, IterTag > Class Template Reference

An iterator adaptor that filters the elements of given inner iterators. More...

#include <STLExtras.h>

Inheritance diagram for wpi::filter_iterator_base< WrappedIteratorT, PredicateT, IterTag >:
wpi::iterator_adaptor_base< filter_iterator_base< WrappedIteratorT, PredicateT, IterTag >, WrappedIteratorT, std::common_type< IterTag, std::iterator_traits< WrappedIteratorT >::iterator_category >::type > wpi::iterator_facade_base< filter_iterator_base< WrappedIteratorT, PredicateT, IterTag >, std::common_type< IterTag, std::iterator_traits< WrappedIteratorT >::iterator_category >::type, T, DifferenceTypeT, PointerT, ReferenceT > wpi::filter_iterator_impl< WrappedIteratorT, PredicateT, IterTag >

Public Member Functions

filter_iterator_baseoperator++ ()
 
- Public Member Functions inherited from wpi::iterator_adaptor_base< filter_iterator_base< WrappedIteratorT, PredicateT, IterTag >, WrappedIteratorT, std::common_type< IterTag, std::iterator_traits< WrappedIteratorT >::iterator_category >::type >
filter_iterator_base
< WrappedIteratorT, PredicateT,
IterTag > & 
operator+= (difference_type n)
 
filter_iterator_base
< WrappedIteratorT, PredicateT,
IterTag > & 
operator-= (difference_type n)
 
difference_type operator- (const filter_iterator_base< WrappedIteratorT, PredicateT, IterTag > &RHS) const
 
filter_iterator_base
< WrappedIteratorT, PredicateT,
IterTag > & 
operator++ ()
 
filter_iterator_base
< WrappedIteratorT, PredicateT,
IterTag > & 
operator-- ()
 
bool operator== (const filter_iterator_base< WrappedIteratorT, PredicateT, IterTag > &RHS) const
 
bool operator< (const filter_iterator_base< WrappedIteratorT, PredicateT, IterTag > &RHS) const
 
ReferenceT operator* () const
 
- Public Member Functions inherited from wpi::iterator_facade_base< filter_iterator_base< WrappedIteratorT, PredicateT, IterTag >, std::common_type< IterTag, std::iterator_traits< WrappedIteratorT >::iterator_category >::type, T, DifferenceTypeT, PointerT, ReferenceT >
filter_iterator_base
< WrappedIteratorT, PredicateT,
IterTag > 
operator+ (DifferenceTypeT n) const
 
filter_iterator_base
< WrappedIteratorT, PredicateT,
IterTag > 
operator- (DifferenceTypeT n) const
 
filter_iterator_base
< WrappedIteratorT, PredicateT,
IterTag > & 
operator++ ()
 
filter_iterator_base
< WrappedIteratorT, PredicateT,
IterTag > 
operator++ (int)
 
filter_iterator_base
< WrappedIteratorT, PredicateT,
IterTag > & 
operator-- ()
 
filter_iterator_base
< WrappedIteratorT, PredicateT,
IterTag > 
operator-- (int)
 
bool operator!= (const filter_iterator_base< WrappedIteratorT, PredicateT, IterTag > &RHS) const
 
bool operator> (const filter_iterator_base< WrappedIteratorT, PredicateT, IterTag > &RHS) const
 
bool operator<= (const filter_iterator_base< WrappedIteratorT, PredicateT, IterTag > &RHS) const
 
bool operator>= (const filter_iterator_base< WrappedIteratorT, PredicateT, IterTag > &RHS) const
 
PointerT operator-> ()
 
PointerT operator-> () const
 
ReferenceProxy operator[] (DifferenceTypeT n)
 
ReferenceProxy operator[] (DifferenceTypeT n) const
 

Protected Member Functions

void findNextValid ()
 
 filter_iterator_base (WrappedIteratorT Begin, WrappedIteratorT End, PredicateT Pred)
 
- Protected Member Functions inherited from wpi::iterator_adaptor_base< filter_iterator_base< WrappedIteratorT, PredicateT, IterTag >, WrappedIteratorT, std::common_type< IterTag, std::iterator_traits< WrappedIteratorT >::iterator_category >::type >
 iterator_adaptor_base (WrappedIteratorT u)
 
const WrappedIteratorT & wrapped () const
 

Protected Attributes

WrappedIteratorT End
 
PredicateT Pred
 
- Protected Attributes inherited from wpi::iterator_adaptor_base< filter_iterator_base< WrappedIteratorT, PredicateT, IterTag >, WrappedIteratorT, std::common_type< IterTag, std::iterator_traits< WrappedIteratorT >::iterator_category >::type >
WrappedIteratorT I
 

Additional Inherited Members

- Public Types inherited from wpi::iterator_adaptor_base< filter_iterator_base< WrappedIteratorT, PredicateT, IterTag >, WrappedIteratorT, std::common_type< IterTag, std::iterator_traits< WrappedIteratorT >::iterator_category >::type >
using difference_type = DifferenceTypeT
 
- Protected Types inherited from wpi::iterator_facade_base< filter_iterator_base< WrappedIteratorT, PredicateT, IterTag >, std::common_type< IterTag, std::iterator_traits< WrappedIteratorT >::iterator_category >::type, T, DifferenceTypeT, PointerT, ReferenceT >
enum  
 

Detailed Description

template<typename WrappedIteratorT, typename PredicateT, typename IterTag>
class wpi::filter_iterator_base< WrappedIteratorT, PredicateT, IterTag >

An iterator adaptor that filters the elements of given inner iterators.

The predicate parameter should be a callable object that accepts the wrapped iterator's reference type and returns a bool. When incrementing or decrementing the iterator, it will call the predicate on each element and skip any where it returns false.

int A[] = { 1, 2, 3, 4 };
auto R = make_filter_range(A, [](int N) { return N % 2 == 1; });
// R contains { 1, 3 }.

Note: filter_iterator_base implements support for forward iteration. filter_iterator_impl exists to provide support for bidirectional iteration, conditional on whether the wrapped iterator supports it.


The documentation for this class was generated from the following file: