Extends a unary_function : for_each « STL Algorithms Non modifying sequence operations « C++






Extends a unary_function

  
#include <algorithm>
#include <functional>
#include <vector>
#include <iostream>
using namespace std;

class MinMax : public unary_function<int, void>{
public:
  MinMax();
  void operator()(int elem);
  int min, max;

protected:
  bool first;
};

MinMax::MinMax() : min(-1), max(-1), first(true){}

void MinMax::operator()(int elem){
  if (first) {
    min = max = elem;
  } else if (elem < min) {
    min = elem;
  } else if (elem > max) {
    max = elem;
  }
  first = false;
}

int main(int argc, char** argv){
  vector<int> myVector;

  myVector.push_back(1);
  myVector.push_back(2);
  myVector.push_back(3);

  MinMax func;
  func = for_each(myVector.begin(), myVector.end(), func);
  cout << "The max is " << func.max << endl;
  cout << "The min is " << func.min << endl;

  return (0);
}
  
    
  








Related examples in the same category

1.Use for_each with predicate
2.Use for_each function to add value for each element
3.Use for_each function to add first element to each element in the list
4.Use for_each function to print all elements in a vector
5.Call custom function in for_each
6.Use custom function and for_each to calculate mean value
7.Extends unary_function to do sum
8.A function object that computes an integer sum.