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
#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;
}