Pigweed
 
Loading...
Searching...
No Matches
pw::containers::FilteredView< Container, Filter > Class Template Reference

#include <filtered_view.h>

Classes

class  iterator
 

Public Types

using const_iterator = iterator
 

Public Member Functions

constexpr FilteredView (const Container &container, const Filter &filter)
 
constexpr FilteredView (const Container &container, Filter &&filter)
 
constexpr FilteredView (FilteredView &&)=default
 
constexpr FilteredViewoperator= (FilteredView &&)=default
 
constexpr FilteredView (const FilteredView &)=delete
 
constexpr FilteredViewoperator= (const FilteredView &)=delete
 
const auto & operator[] (size_t index) const
 
const auto & front () const
 
const auto & back () const
 
size_t size () const
 
bool empty () const
 
iterator begin () const
 
iterator end () const
 

Detailed Description

template<typename Container, typename Filter>
class pw::containers::FilteredView< Container, Filter >

pw::containers::FilteredView provides a view of a container with only elements that match the specified filter. This class is similar to C++20's std::ranges::filter_view.

FilteredView works with any container with an incrementable iterator. The back() function currently requires a bidirectional iterator.

To create a FilteredView, pass a container and a filter predicate, which may be any callable type including a function pointer, lambda, or pw::Function.

std::array<int, 99> kNumbers = {3, 1, 4, 1, ...};
for (int n : FilteredView(kNumbers, [](int v) { return v % 2 == 0; })) {
PW_LOG_INFO("This number is even: %d", n);
}
Definition: filtered_view.h:44

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