Listing 2
#include <algorithm> #include <array> #include <functional> #include <iostream> #include <iterator> using std::tr1::array; using std::cout; using std::ostream_iterator; using std::negate; using std::transform; typedef array<double, 7> arr; typedef arr::iterator arr_it; int main() { // use template negate to negate values in a range arr data = { 1.0, -1.1, -2.7, 3.1, -3.1, 3, 5.0 }; copy(data.begin(), data.end(), ostream_iterator<double>(cout, " ") ); cout << '\n'; transform(data.begin(), data.end(), data.begin(), negate<double>() ); copy(data.begin(), data.end(), ostream_iterator<double>(cout, " ") ); cout << '\n'; return 0; }