繁体   English   中英

bind1st 和 bind2nd

[英]bind1st and bind2nd

我对以下参考有看法:

绑定1st

绑定2nd

我不明白的是两者之间的区别。 任何人都可以帮助我了解差异。一个例子会更有帮助。

bind1st绑定第一个参数(例如,您有foo(int a, int b) ,然后bind1st(foo, 1)(bar)将等同于foo(1, bar) ), bind2nd第二个。 但是,不要使用它们,它们几乎没用——使用广义boost::bind代替(或 C++0x 中的std::bind )。

假设您有一个 function object f(x,y)和一个只需要一个变量的 functoid 的算法。 那么有两种可能:

  • y设置一些固定值并让算法在x上工作
  • x设置一些固定值并让算法在y上工作

这就是区别。

bind1st 绑定 function 的第一个参数,而 bind2nd 绑定第二个参数。 如果像 plus() 仿函数一样进行操作,则不会有任何区别,因为在两种情况下,两个数字的加法都保持不变,但是如果您进行像 minus() 这样的操作,那么它会有所不同,具体取决于您使用 bind1st 或 bind2nd,例如 5- 4 和 4-5 会产生不同的结果,现在你得到了 bind1st 第一个参数绑定和 bind2nd 第二个参数绑定之间的区别。

这很明显。 bind1st将值绑定到函子的第一个操作数(假设您知道 C++ 中的函子是什么), bind2nd到第二个。 但是对于作为+ (或std::plus )的交换运算符,它实际上没有区别(如果你没有在该示例中使用非交换行为重载+ )。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM