OpenABF 2.1.0
Loading...
Searching...
No Matches
Public Types | Public Member Functions | Private Member Functions | Private Attributes | List of all members
OpenABF::detail::FilteringIterator< Iter, Pred > Class Template Reference

Input iterator that skips elements not matching a predicate. More...

#include <OpenABF/OpenABF.hpp>

Public Types

using difference_type = std::ptrdiff_t
 
using value_type = typename std::iterator_traits< Iter >::value_type
 
using pointer = typename std::iterator_traits< Iter >::pointer
 
using reference = typename std::iterator_traits< Iter >::reference
 
using iterator_category = std::input_iterator_tag
 

Public Member Functions

 FilteringIterator ()=default
 
 FilteringIterator (Iter current, Iter end, Pred pred)
 
auto operator* () const -> reference
 
auto operator-> () const -> pointer
 
auto operator++ () -> FilteringIterator &
 
auto operator== (const FilteringIterator &other) const -> bool
 
auto operator!= (const FilteringIterator &other) const -> bool
 

Private Member Functions

void advance_to_next ()
 

Private Attributes

Iter current_ {}
 
Iter end_ {}
 
Pred pred_ {}
 

Detailed Description

template<typename Iter, typename Pred>
class OpenABF::detail::FilteringIterator< Iter, Pred >

Input iterator that skips elements not matching a predicate.

Wraps a base iterator and advances automatically past elements for which pred(*it) is false.

Member Typedef Documentation

◆ difference_type

template<typename Iter , typename Pred >
using OpenABF::detail::FilteringIterator< Iter, Pred >::difference_type = std::ptrdiff_t

Difference type.

◆ iterator_category

template<typename Iter , typename Pred >
using OpenABF::detail::FilteringIterator< Iter, Pred >::iterator_category = std::input_iterator_tag

Iterator category.

◆ pointer

template<typename Iter , typename Pred >
using OpenABF::detail::FilteringIterator< Iter, Pred >::pointer = typename std::iterator_traits<Iter>::pointer

Pointer type.

◆ reference

template<typename Iter , typename Pred >
using OpenABF::detail::FilteringIterator< Iter, Pred >::reference = typename std::iterator_traits<Iter>::reference

Reference type.

◆ value_type

template<typename Iter , typename Pred >
using OpenABF::detail::FilteringIterator< Iter, Pred >::value_type = typename std::iterator_traits<Iter>::value_type

Value type.

Constructor & Destructor Documentation

◆ FilteringIterator() [1/2]

template<typename Iter , typename Pred >
OpenABF::detail::FilteringIterator< Iter, Pred >::FilteringIterator ( )
default

Default constructor.

◆ FilteringIterator() [2/2]

template<typename Iter , typename Pred >
OpenABF::detail::FilteringIterator< Iter, Pred >::FilteringIterator ( Iter  current,
Iter  end,
Pred  pred 
)
inline

Construct over [current, end) filtering by pred.

Member Function Documentation

◆ advance_to_next()

template<typename Iter , typename Pred >
void OpenABF::detail::FilteringIterator< Iter, Pred >::advance_to_next ( )
inlineprivate

Advance current_ past elements failing pred_.

◆ operator!=()

Inequality.

◆ operator*()

Dereference.

◆ operator++()

Pre-increment; skips elements failing pred.

◆ operator->()

Member access.

◆ operator==()

Equality.

Member Data Documentation

◆ current_

template<typename Iter , typename Pred >
Iter OpenABF::detail::FilteringIterator< Iter, Pred >::current_ {}
private

Underlying iterator position.

◆ end_

Underlying end iterator.

◆ pred_

Predicate selecting which elements to visit.