加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c – 了解值绑定器

发布时间:2020-12-16 10:22:59 所属栏目:百科 来源:网络整理
导读:花了整整一年的时间,但我已经通过David Vandevoorde和Nicolai M. Josuttis在 C++ Templates – The Complete Guide工作了,现在我被困在最后一章的最后一部分 – 过去3周的价值粘合剂. 值粘合剂的介绍,第457页的第22.8节,很容易理解,但我发现本节其余部分的例
花了整整一年的时间,但我已经通过David Vandevoorde和Nicolai M. Josuttis在 C++ Templates – The Complete Guide工作了,现在我被困在最后一章的最后一部分 – 过去3周的价值粘合剂.

值粘合剂的介绍,第457页的第22.8节,很容易理解,但我发现本节其余部分的例子很难理解.具体来说,我不明白Binder(见functors/binder1.hpp和functors/binder2.hpp以及BinderParams类(见functors/binderparams.hpp)试图实现的目标.我的困难不在于模板语法,而在于这些类背后的意图.

Binder类如何执行绑定? BinderParams类如何识别(?)参数?这就是我难以看到/理解的东西.

解决方法

它是 partial application的一个实现,你可以在其中获取一个函数(或函子),并将一个值“绑定”到它的一个参数上,以获得一个新的函子减去一个参数.

这通常用于将一般函数与特定数据组合,而无需自己编写额外的样板代码.

考虑:您希望通过将函数应用于每个元素来转换集合,从而生成相同大小的新集合.例如,std :: transform需要一元函数.如果你已经有一个函数正在做你想要的但是需要更多的参数(例如,当你只想为每个元素添加相同的常量时,Kerrek的AddTwoThings),你可以:

>重写它
>编写另一个函数来调用第一个,并修复一个参数
>或者,您可以将一个参数绑定到固定值,获取std :: transform可以使用的一元函数

对于一些实例,显示了Vandevoor& C的标准等效物的简单用途. Josuttis的系统,看到令人惊讶的详细cppreference examples.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读