C<X> filter( C<X> container, F<X> functor );
where :
Parameter | Description |
---|---|
container | an STL container of type C holding objects type X |
functor | a functor taking a parameter of type X and returning a boolean value |
A container of type C holding objects of type X
Returns a container with the elements of the input container for which the functor returned true
.
// source : examples/apply_example.cpp #include <iostream> #include <vector> #include "sftl.h" using namespace std; bool is_even( int x ) { return (x&1)==0; } bool is_even_r( int& x ) { return (x&1)==0; } bool is_even_p( int* x ) { return ((*x)&1)==0; } struct Number { int value; Number( int val ) : value(val) {} bool isEven () { return (value&1)==0; } }; int main() { // create vector of numbers int numbers [] = {1,2,3,4,5,6,7,8,9}; vector<int> v_numbers( &numbers[0], &numbers[9] ); // filter with functions vector<int> evens_1 = filter( v_numbers, is_even ); vector<int> evens_2 = filter( v_numbers, is_even_r ); vector<int> evens_3 = filter( v_numbers, is_even_p ); // create vector of Number objects vector<Number> v_Numbers( &numbers[0], &numbers[9] ); // filter with class method vector<Number> evens_4 = filter( v_Numbers, &Number::isEven ); }