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