码迷,mamicode.com
首页 > 其他好文 > 详细

14.8.2. 标准库定义的函数对象

时间:2015-04-07 11:24:29      阅读:123      评论:0      收藏:0      [点我收藏+]

标签:

#include<iostream>
#include<string>
#include<vector>
using namespace std;

/*
这个类很简单,它定义了一个操作:函数调用操作符,该操作符有一个形参
并返回形参的绝对值。
函数调用操作符必须声明为成员函数。一个类可以定义函数调
用操作符的多个版本,由形参的数目或类型加以区别
*/
struct absInt
{
	int operator()(int val)
	{
		return val<0 ? -val:val;
	}
};
/*定义了调用操作符的类,其对象常称为函数对象,即它们是行为类似函数的对象*/

/*14.8.1. 将函数对象用于标准库算法*/
/*我们的实现有个严重问题:它将 6 这个数字固化在 GT6 函数的定义中。
count_if 算法运行只用一个形参且返回 bool 的函数。理想情况下,应传递 
string 和我们想要的长度进行测试。通过该方式,可以使用同一代码对不同长
度的字符串进行计数。 
通过将 GT6 定义为带函数调用成员类,可以获得所需的灵活性。将这个类命名
为 GT_cls 以区别于函数*/
class GT_cls
{
private:
	vector<string>::size_type bood;
public:
	GT_cls(size_t val=0):bood(val){}
	bool operator()(string &str)
	{
		return str.size()>bood;
	}
};
int main()
{

	system("pause");
	return 1;

}

  

14.8.2. 标准库定义的函数对象

标签:

原文地址:http://www.cnblogs.com/yanliang12138/p/4397653.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!