C++/STL Basics/binary function
std::binary_function
<source lang="cpp">
/* The following code example is taken from the book
* "The C++ Standard Library - A Tutorial and Reference" * by Nicolai M. Josuttis, Addison-Wesley, 1999 * * (C) Copyright Nicolai M. Josuttis 1999. * 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>
- include <vector>
- include <algorithm>
- include <iterator>
using namespace std; // include self-defined fopow<>
- include <functional>
- include <cmath>
template <class T1, class T2> struct fopow : public std::binary_function<T1, T2, T1> {
T1 operator() (T1 base, T2 exp) const { return std::pow(base,exp); }
};
int main() {
vector<int> coll; // insert elements from 1 to 9 for (int i=1; i<=9; ++i) { coll.push_back(i); } // print 3 raised to the power of all elements transform (coll.begin(), coll.end(), // source ostream_iterator<float>(cout," "), // destination bind1st(fopow<float,int>(),3)); // operation cout << endl; // print all elements raised to the power of 3 transform (coll.begin(), coll.end(), // source ostream_iterator<float>(cout," "), // destination bind2nd(fopow<float,int>(),3)); // operation cout << endl;
} /* 3 9 27 81 243 729 2187 6561 19683 1 8 27 64 125 216 343 512 729
*/ </source>