了解值绑定器

Olu*_*ide 3 c++ generics templates c++11

它花了整整一年但我已经通过C++模板 - David Vandevoorde和Nicolai M. Josuttis 的完整指南,现在我被困在最后一章的最后一部分 - 值粘合剂,过去3年周.

值粘合剂的介绍,第457页的第22.8节,很容易理解,但我发现本节其余部分的例子很难理解.具体地讲,我不明白是什么Binder(见函子/ binder1.hpp函子/ binder2.hppBinderParams类(见函子/ binderparams.hpp)正在努力实现的.我的难度不与模板语法,但背后的意图,这些类.

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

Use*_*ess 5

它是部分应用程序的一个实现,你可以使用一个函数(或函子),并将一个值"绑定"到它的一个参数上,以获得一个新的函子减去一个参数.

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

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

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

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