C++:21---仿函数 你的名字 2022-12-29 12:41 84阅读 0赞 **什么是仿函数** 所谓的仿函数(functor),是通过重载()运算符模拟函数形为的类。 因此,这里需要明确两点: 1 仿函数不是函数,它是个类; 2 仿函数重载了()运算符,使得它的对你可以像函数那样子调用(代码的形式好像是在调用函数)。 假设有一个vector<string>,你的任务是统计长度小于20的字符串的个数,如果使用count\_if函数的话,你的代码可能长成这样: #define STR_LEN 20 bool LengthIsLess(const string& str) { return str.length()<STR_LEN; } int res=count_if(vec.begin(), vec.end(), LengthIsLess); 其中count\_if函数的第三个参数是一个函数指针,返回一个bool类型的值。 如果修改LengthIsLess这个函数原型,将原来的宏定义通过参数传进来呢: bool LengthIsLess(const string& str, int len) 但是他不能满足count\_if函数的参数要求:count\_if要求的是仅带有一个参数。怎么样找到以上两个函数的一个折中的解决方案呢? 有三种解决方案可以考虑: 1、函数的局部变量; 局部变量不能在函数调用中传递,而且caller无法访问。 2、函数的参数; 这种方法我们已经讨论过了&\#x
还没有评论,来说两句吧...