基本的“证”仿函数是identity,其他均为一般化形式。C++标准没有涵盖identity和映射两种操作行为,但由于它们使用得非常普遍,多数C++版本中添加了它们的定义。
1.仿函数identity
类identity是一种一元仿函数,用于表示“证”仿函数,使用时需要一个参数,返回的是未经任何变化的原参数。
例13-18
例13-18的执行结果为:
提示
在Visual Studio 2008环境下,为确保程序能够顺利通过,需要将头文件<yvals.h>中的宏_HAS_TRADITIONAL_STL的值修改为1,编译程序才能顺利通过。13.7节和13.8节中的内容均做相同处理。
2.仿函数project1st和project2nd
仿函数project1st的声明形式为:
仿函数project2nd的声明形式为:
这两个仿函数均接受两个参数。project1st返回第一个参数并忽略第二参数;project2nd返回第二个参数并忽略第一个参数。这两个仿函数的基类均为binary_function<Arg1,Arg2,Arg2>。这两个仿函数类均包括5个成员函数:
在使用上述两个仿函数时,需要包含头文件<functional>。
例13-19(www.xing528.com)
例13-19的执行结果为:
3.仿函数select1st和select2nd
仿函数select1st<pair>和select2nd<pair>可以接受单一参数,参数是pair类型。仿函数select1st返回该pair的第一个元素;仿函数select2nd返回该pair的第二个元素。这两个仿函数也定义于头文件<functional>中。这两个仿函数的基类是:unary_function<pair,typename pair::first_type>
这两个仿函数类均包括4个成员函数:
•argument_type
•result_type
•const typename pair::first_type&select1st::operator()(const pair&p)const
•select1st()/select2nd()
例13-20
例13-20的执行结果为:
抽取键值:1 33 47
抽取实值:0.3 0.1 0.8
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。