use generic function as predicate : predicate « STL Basics « C++






use generic function as predicate

 
 

/* The following code example is taken from the book
 * "C++ Templates - The Complete Guide"
 * by David Vandevoorde and Nicolai M. Josuttis, Addison-Wesley, 2002
 *
 * (C) Copyright David Vandevoorde and Nicolai M. Josuttis 2002.
 * Permission to copy, use, modify, sell and distribute this software
 * is granted provided this copyright notice appears in all copies.
 * This software is provided "as is" without express or implied
 * warranty, and with no claim as to its suitability for any purpose.
 */
#include <iostream>
using namespace std;

template <typename T, int VAL>
T addValue (T const& x)
{
    return x + VAL;
}


void call_addValue()
{
    addValue<int,5>(42);
}

template <typename IT, typename OP>
void transform (IT beg, IT end, IT to, OP op)
{
    while (beg != end) {
        *to++ = op(*beg++);
    }
}

int main()
{
    call_addValue();

    int m[] = { 1, 2, 3, 4, 5, 6 };

    transform (m, m+6,
               m,
               (int(*)(int const&))    // cast necessary
               addValue<int,5>);

    for(int i=0;i<6;i++){
       cout << m[i] << " ";
    }
}
/* 
6 7 8 9 10 11
 */
        
  








Related examples in the same category

1.Create your own unary function
2.Function object to process the mean value
3.Illustrating the use of an adaptor for pointers to functions
4.Use predicate, which returns whether an integer is a prime number, with a list
5.Convenience function for the compose_f_gx adapter
6.Convenience function for the compose_f_gx_hx adapter
7.Convenience function for the compose_f_gx_hy adapter