#include <iostream>
#include <functional>
#include <algorithm>
using namespace std;
template <class Arg, class Result>
class is_odd
{
public:
typedef Arg argument_type;
typedef Result res;
bool operator() ( const int& value)const {return (value%2==1); }
};
int main () {
int values[] = {1,2,3,4,5};
int cx;
cx = count_if ( values, values+5, not1(is_odd<int,bool>()) );
cout << "There are " << cx << " elements with even values.\n";
return 0;
#include <functional>
#include <algorithm>
using namespace std;
template <class Arg, class Result>
class is_odd
{
public:
typedef Arg argument_type;
typedef Result res;
bool operator() ( const int& value)const {return (value%2==1); }
};
int main () {
int values[] = {1,2,3,4,5};
int cx;
cx = count_if ( values, values+5, not1(is_odd<int,bool>()) );
cout << "There are " << cx << " elements with even values.\n";
return 0;
}
方法二:继承 函数对象
#include <iostream>
#include <functional>
using namespace std;
struct IsOdd : public unary_function<int,bool> {
bool operator() (int number) {return (number%2==1);}
};
int main () {
IsOdd IsOdd_object;
IsOdd::argument_type input;
IsOdd::result_type result;
cout << "Please enter a number: ";
cin >> input;
result = IsOdd_object (input);
cout << "Number " << input << " is " << (result?"odd":"even") << ".\n";
return 0;
}