C++/STL Algorithms Helper/negate

Материал из C\C++ эксперт
Перейти к: навигация, поиск

Negate contents of a list with transform() and negate()

  
#include <iostream>
#include <list>
#include <functional>
#include <algorithm>
using namespace std;
   
int main()
{
  list<double> l;
  int i;
   
  for(i=1; i<10; i++) l.push_back((double)i);
   
  list<double>::iterator p = l.begin();
  while(p != l.end()) {
    cout << *p << " ";
    p++;
  }
  cout << endl;
   
  p = transform(l.begin(), l.end(),l.begin(),negate<double>());
   
  cout << "Negated contents of the list:\n";
  p = l.begin();
  while(p != l.end()) {
    cout << *p << " ";
    p++;
  }
   
  return 0;
}


negate for list

  
 
#include <iostream>
#include <list>
#include <functional>
#include <algorithm>
using namespace std;
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 the negate function object
  p = transform(vals.begin(), vals.end(),
                vals.begin(),
                negate<double>()); // call function object
  cout << "Negated 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
Negated contents of vals:
-1 -2 -3 -4 -5 -6 -7 -8 -9
 */


negate the contents of result

  
#include <iostream>
#include <vector>
#include <algorithm>
#include <functional>
using namespace std;
int main()
{
  vector<int> v, v2, result(10);
  for(unsigned i=0; i < 10; ++i) v.push_back(i);
  for(unsigned i=0; i < 10; ++i) v2.push_back(i);
  transform(v.begin(), v.end(), v.begin(), negate<int>());
  return 0;
}