std::
unary_function
类模板 <functional>
C++98 |
template <class Arg, class Result> struct unary_function;
|
C++11 |
template <class Arg, class Result> struct unary_function; // deprecated |
一元函数对象基类
注意:这个类在c++ 11中已弃用。
这是标准一元函数对象的基类。
一般来说,函数对象是定义了成员函数operator()的类的实例。该成员函数允许使用与常规函数调用相同的语法来使用对象,
因此当期望使用泛型函数类型时,可以将其类型用作模板参数。
对于一元函数对象,这个operator()成员函数接受单个形参。
Unary_function只是一个基类,从它派生出特定的一元函数对象。
它没有定义operator()成员(期望派生类定义哪些成员)—-它只有两个公共数据成员,它们是模板形参的类型定义。定义为:
template <class Arg, class Result>
struct unary_function {
typedef Arg argument_type;
typedef Result result_type;
}; |
☲ 成员类型
成员类型 |
定义 |
注释 |
argument_type |
第一个模板参数(Arg) |
成员operator()中的实参类型 |
result_type |
第二个模板参数(Result) |
成员operator()返回的类型 |
☣ 示例
// unary_function example
#include <iostream> // std::cout, std::cin
#include <functional> // std::unary_function
struct IsOdd : public std::unary_function<int,bool> {
bool operator() (int number) {return (number%2!=0);}
};
int main () {
IsOdd IsOdd_object;
IsOdd::argument_type input;
IsOdd::result_type result;
std::cout << "Please enter a number: ";
std::cin >> input;
result = IsOdd_object (input);
std::cout << "Number " << input << " is " << (result?"odd":"even") << ".\n";
return 0;
}
|
可能输出:
Please enter a number: 2
Number 2 is even.
🍄 另请参阅