Mega Code Archive

 
Categories / C++ Tutorial / STL Introduction
 

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