Create your own unary function : predicate « STL Basics « C++






Create your own unary function

 
 

#include <iostream>
#include <list>
#include <functional>
#include <algorithm>
using namespace std;

class reciprocal: unary_function<double, double> {
public:
  result_type operator()(argument_type i)
  { 
    return (result_type) 1.0/i;
  }
};

int main()
{
  list<double> vals;

  for(int i=1; i<10; i++) vals.push_back((double)i);

  cout << "Original contents of vals:\n";
  list<double>::iterator p = vals.begin();
  while(p != vals.end()) {
    cout << *p << " ";
    p++;
  }
  cout << endl;
 
  // use reciprocal function object
  p = transform(vals.begin(), vals.end(),
                vals.begin(),
                reciprocal()); // call function object

  cout << "Transformed contents of vals:\n";
  p = vals.begin();
  while(p != vals.end()) {
    cout << *p << " ";
    p++;
  }

  return 0;
}

 /* 
Original contents of vals:
1 2 3 4 5 6 7 8 9
Transformed contents of vals:
1 0.5 0.333333 0.25 0.2 0.166667 0.142857 0.125 0.111111
 */       
  








Related examples in the same category

1.use generic function as predicate
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