C++ functor_c++ functor的实现-程序员宅基地

技术标签: cpp  functor  

functor就是一个重载了 operator()的类,用这个类生成的实例就像一个函数。(functor就是一个作为函数用的类),在c++11后可以用lambda函数实现同样的功能。

参考链接:stackoverflow

// this is a functor
struct add_x {
  add_x(int x) : x(x) {}
  int operator()(int y) const { return x + y; }

private:
  int x;
};

// 这也是一个functor
struct inc{
  int operator()(int _i) { return _i + 1;}
};

// Now you can use it like this:
add_x add42(42); // create an instance of the functor class
int i = add42(8); // and "call" it
assert(i == 50); // and it added 42 to its argument, 检查i是否等于50

std::vector<int> in; // assume this contains a bunch of values)
std::vector<int> out(in.size());
// Pass a functor to std::transform, which calls the functor on every element 
// in the input sequence, and stores the result to the output sequence
// add_x(1), 相当于创建了 add_x add1(1)
// add1 相当于一个函数,传入一个int参数, 这个int 会加上 1
std::transform(in.begin(), in.end(), out.begin(), add_x(1)); 
//相当于
inc i_1;
std::transform(in.begin(), in.end(), out.begin(), i_1); 
// 效果和下面这句相同
std::transform(in.begin(), in.end(), out.begin(), [](int x){ return x + 1;});
assert(out[i] == in[i] + 1); // for all i
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/u014547577/article/details/76577594

智能推荐

知乎神回复:计算机应届生月薪大多是多少?10K仅仅才是起薪!_计算机两年经验10k-程序员宅基地

文章浏览阅读826次。能做到以下四点,本科在北上广深拿到10K以上,硕士15K以上,非常容易:第一,学校内的课程,计算机基础知识,如C语言,数据结构,计算机组成原理,计算机网络,计算机操作系统等这些基础专业知识一定要理解掌握,在校招中,这些内容必考。第二,提升自己写代码的能力。不会配置环境,不会框架,就去找资料自学,B站,慕课很多免费视频课程。第三,做项目。这里不是指学校做的项目,而是真正可以部署上线的项目。你可以去GitHub上找,也可以从学长学姐或者老师看是否有合适的项目,或者找一些大厂实习岗位。第四,疯_计算机两年经验10k

自动化运维工具saltstack(二)---grains、pillar、job cache、jinja模板详解与nginx、keepalived服务的配置_saltstack 变量赋值-程序员宅基地

文章浏览阅读342次。1.配置管理(续)现在,在上一篇博文的基础上,继续讲一下配置管理。补充一下sls文件的知识: Salt 状态系统的核心是SLS,或者叫SaLt State 文件。 SLS表示系统将会是什么样的一种状态,而且是以一种很简单的格式来包含这些数据,常被叫做配置管理。 sls文件命名: sls文件以”.sls”后缀结尾,但在调用是不用写此后缀。 使用子目录来做组织是个很好的选择。  init..._saltstack 变量赋值

MySQL ERROR 1701 (42000): Cannot truncate a table referenced in a foreign key constraint错误解决-程序员宅基地

文章浏览阅读1k次。MySQL ERROR 1701 (42000): Cannot truncate a table referenced in a foreign key constraint错误解决方法_cannot truncate a table referenced in a foreign key constraint

ewomail邮箱服务器多条件一次性搭建(亲测有效,docker兼容任何系统,踩了一些文档不完备的坑)_ewomail docker安装-程序员宅基地

文章浏览阅读4.1k次。我的是ubuntu系统,你如果是centos可以把apt-get改为yum即可。确保安装了docker 和docker-composeapt-get install docker -yapt-get install docker-compose -y新建目录,编辑docker-compose.ymlvi docker-compose.txt#粘贴下面的文本并保存# 重命名主要是因为直接粘贴yml vi编辑器自动补缩进,虽然可以修改vi设置禁用自动缩进,但是教程里我更乐意重命名一下,不改动._ewomail docker安装

K8s攻击案例:组件未授权访问导致集群入侵_kubelet api 未授权访问漏洞-程序员宅基地

文章浏览阅读7.9k次,点赞24次,收藏20次。K8s集群往往会因为组件的不安全配置存在未授权访问的情况,如果攻击者能够进行未授权访问,可能导致集群节点遭受入侵。比较常见的的组件未授权访问漏洞,主要包括 API Server 未授权访问、kubelet 未授权访问、etcd 未授权访问、kube-proxy 不安全配置、Dashboard未授权访问。接下来,我们将对这几个未授权访问的攻击场景和攻击过程进行详细的分析。01、 API Server..._kubelet api 未授权访问漏洞

Java编程规范-命名与语句_技术极客java 规范 import-程序员宅基地

文章浏览阅读258次。命名建议按照此规范处理UpperCamelCase 风格:每个单词首字母大写,其余字母小写;lowerCamelCase 风格:首单词全小写,后面每单词首字母大写,其余字母小写;示例:【错误用法】userinfo nowCustomerID 【正确用法】UserInfo /* UpperCamelCase */ nowCustomerId /* lowerCamelCase */ 1包按照此规范处理包名全部小写,连续的单词使用 ’ . ’ 连接起来,不使用下划_技术极客java 规范 import

随便推点

bugku PEN_AND_APPLE (狗师傅平日里比较害羞,但是又想追女神,于是他隐藏了一段信息在这段自拍中,这句话是他最想对女神说的话:) 你能找到信息,并帮助狗师傅表白成功么:) 视屏在这儿)-程序员宅基地

文章浏览阅读3k次。提示是Windows下的type命令,Windows下的type命令可以显示文件内容。利用NTFS流文件隐藏首先用记事本新建两个文本文档,分别名为“1.txt”“2.txt”,其内容为“正常文件、数据流文件”,打开CMD命令行窗口, 进入两个文件所在文件夹,输入 type 2.txt>1.txt: shujuliu.txt,回车.即可将文件2.txt的内容加入1.txt, 内容..._bugku pen_and_apple

SQL获取每个分类中,最新的10条数据_sqlsevere 按每天取十条数据-程序员宅基地

文章浏览阅读5.5k次。Oracel和MSsql可以用自带函数如row_number()可以解决,比较方便,如下:select * from (select *,row_number() over(PARTITION by c_prov order by c_publish_date) as rowid from spiderdata_virus_prov_status) a where rowid<=10_sqlsevere 按每天取十条数据

三大框架SSM基础知识点_ssm框架-程序员宅基地

文章浏览阅读6.5k次,点赞2次,收藏52次。本文是对于SSM三大框架的简单总结,涉及三大框架的主要功能和相关的一些工具,也希望此文是对于个人知识点的一个总结。_ssm框架

curl 获取 https 请求方法-程序员宅基地

文章浏览阅读6.1k次。使用curl如果想发起的https请求正常的话有2种做法: 方法一、设定为不验证证书和host。 代码如下:$url = 'https://www.jb51.net';$curl = curl_init();curl_setopt($curl, CURLOPT_URL, $url);curl_setopt($curl, CURLOPT_HEADER, 1);curl_setop...

vue3+ts+vue-grid-layout 实现组件拖拽效果以及解决Vue3使用 vue-grid-layout的问题_vue-grid-layout vue3 +ts-程序员宅基地

文章浏览阅读3.3k次,点赞3次,收藏5次。【代码】vue3+ts+vue-grid-layout 实现组件拖拽效果。_vue-grid-layout vue3 +ts

Element-ui中的分页(pagination)组件的current-page属性不同步更新视图的坑_elementui 分页对象里面的值 跟页面不同步-程序员宅基地

文章浏览阅读7.2k次,点赞5次,收藏11次。Element-ui中的分页(pagination)组件的current-page属性不同步更新视图的坑_elementui 分页对象里面的值 跟页面不同步

推荐文章

热门文章

相关标签