gpt4 book ai didi

c++ - 理解值绑定(bind)器

转载 作者:太空狗 更新时间:2023-10-29 19:46:25 25 4
gpt4 key购买 nike

它花了整整一年的时间,但我已经完成了 C++ Templates - The Complete Guide由 David Vandevoorde 和 Nicolai M. Josuttis 撰写,在过去的 3 周里,我一直停留在最后一章的最后一部分 -- 值(value)绑定(bind)器。

值绑定(bind)器的介绍,第 457 页的第 22.8 节,足够简单易懂,但我发现该节其余部分的示例难以理解。具体来说,我不明白什么Binder(参见functors/binder1.hppfunctors/binder2.hppBinderParams类(参见functors/binderparams.hpp)是试图实现。我的困难不在于模板语法,而在于这些类背后的意图。

Binder 类如何执行绑定(bind)? BinderParams 类如何识别(?)参数?这是我很难看到/理解的。

最佳答案

它是 partial application 的一个实现,在这里你接受一个函数(或仿函数),并将一个值“绑定(bind)”到它的一个参数,以获得一个新的仿函数少一个参数。

这最常用于将通用 函数与特定 数据相结合,而无需您自己编写额外的样板代码。

考虑:您想通过对每个元素应用一个函数来转换一个集合,从而生成一个相同大小的新集合。例如,std::transform 需要一个一元函数。如果您已经有一个函数可以执行您想要的操作但需要更多参数(例如,当您只想向每个元素添加相同的常量时,Kerrek 的 AddTwoThings),您可以:

  • 重写
  • 编写另一个函数以固定一个参数调用第一个函数
  • 或者,您可以一个参数绑定(bind)到固定值,从而获得 std::transform
  • 可用的一元函数

有关显示 Vandevoorde & Josuttis 系统的 C++11 标准等价物的简单用法的一些示例,请参阅令人惊讶的详细信息 cppreference examples .

关于c++ - 理解值绑定(bind)器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12493573/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com