Basics C++

#include 
#include 
#include 
#include 
using namespace std;
class reciprocal: unary_function {
public:
  result_type operator()(argument_type i)
  { 
    return (result_type) 1.0/i;
  }
};
int main()
{
  list vals;
  for(int i=1; i<10; i++) vals.push_back((double)i);
  cout << "Original contents of vals:\n";
  list::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
 */