如何深入理解并高效运用C++中的仿函数与函数适配器技术?

2026-04-19 03:591阅读0评论SEO资讯
  • 内容介绍
  • 相关推荐

本文共计3004个文字,预计阅读时间需要13分钟。

如何深入理解并高效运用C++中的仿函数与函数适配器技术?

所谓的仿函数(functor),是通过重载()运算符模拟函数形式的类。因此,这里需要明确两点:

1. 仿函数不是函数,而是一个类;

2.仿函数重载了()运算符,使其可以像函数一样使用,进行子对象调用。

所谓的仿函数(functor),是通过重载()运算符模拟函数形为的类。  

因此,这里需要明确两点:  

1 仿函数不是函数,它是个类;  

2 仿函数重载了()运算符,使得它的对你可以像函数那样子调用(代码的形式好像是在调用函数)。  

for_each

这里的for循环语句有点冗余,想到了std::for_each ,为了使用for_each,我们需要定义一个函数,如下:

void print( State* pstate ) { pstate->print(); }

于是就可以简化为下面代码:

std::for_each( vect.begin(), vect.end(), &print );

STL大致分为六大模块:容器(container),算法(algorithm),迭代器(iterator),仿函数(functor),配接器(adapter),配置器(allocator)。其中仿函数是体积最小,观念最简单,但是在stl算法的搭配中起到了非常重要的作用,这是与简单的lambda或者指针函数所不同的。

阅读全文

本文共计3004个文字,预计阅读时间需要13分钟。

如何深入理解并高效运用C++中的仿函数与函数适配器技术?

所谓的仿函数(functor),是通过重载()运算符模拟函数形式的类。因此,这里需要明确两点:

1. 仿函数不是函数,而是一个类;

2.仿函数重载了()运算符,使其可以像函数一样使用,进行子对象调用。

所谓的仿函数(functor),是通过重载()运算符模拟函数形为的类。  

因此,这里需要明确两点:  

1 仿函数不是函数,它是个类;  

2 仿函数重载了()运算符,使得它的对你可以像函数那样子调用(代码的形式好像是在调用函数)。  

for_each

这里的for循环语句有点冗余,想到了std::for_each ,为了使用for_each,我们需要定义一个函数,如下:

void print( State* pstate ) { pstate->print(); }

于是就可以简化为下面代码:

std::for_each( vect.begin(), vect.end(), &print );

STL大致分为六大模块:容器(container),算法(algorithm),迭代器(iterator),仿函数(functor),配接器(adapter),配置器(allocator)。其中仿函数是体积最小,观念最简单,但是在stl算法的搭配中起到了非常重要的作用,这是与简单的lambda或者指针函数所不同的。

阅读全文