c++の中でSTLはどのように自分の関数のオブジェクトを書きます


#include
#include
#include
using namespace std;
template
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()) );
  cout << "There are "<< cx << "elements with even values.";
  return 0;
}
メソッド2:関数オブジェクトを継承する
#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") << ".
"; return 0; }