类模板
<functional>

std::unary_function

template <class Arg, class Result> struct unary_function;
template <class Arg, class Result> struct unary_function; // deprecated
一元函数对象基类
注意:此类已在 C++11 中弃用。

这是一个标准一元函数对象的基类。

一般而言,函数对象是定义了成员函数operator()的类的实例。此成员函数允许对象使用与常规函数调用相同的语法进行使用,因此当期望通用函数类型时,其类型可以用作模板参数。

对于一元函数对象,此operator()成员函数接受一个参数。

unary_function只是一个基类,特定的(一元)函数对象从此基类派生。它没有定义operator()成员(派生类应定义它)——它只有两个公共数据成员,它们是模板参数的typedef。它的定义如下:

1
2
3
4
5
template <class Arg, class Result>
  struct unary_function {
    typedef Arg argument_type;
    typedef Result result_type;
  };

成员类型

成员类型定义说明
argument_type第一个模板参数(Arg成员 operator() 中参数的类型
result_type第二个模板参数(Result成员 operator() 返回的类型

示例

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
// 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.


另见