答案 0 :(得分:8)
bind1st
绑定第一个参数(例如,您有foo(int a, int b)
,然后bind1st(foo, 1)(bar)
将等同于foo(1, bar)
),bind2nd
绑定第二个参数。不要使用它们,它们几乎没用 - 在C ++ 0x中使用通用boost::bind
代替(或std::bind
)。
答案 1 :(得分:3)
假设您有一个函数对象f(x,y)
和一个只需要一个变量就需要一个functoid的算法。然后有两种可能性:
y
设置一些固定值,让算法在x
x
设置一些固定值,让算法在y
这就是区别。
答案 2 :(得分:0)
这很明显。 bind1st
将值绑定到仿函数的第一个操作数(假设您知道C ++中的仿函数是什么),bind2nd
到第二个。但对于+
(或std::plus
)的交换运算符,它实际上没有区别(如果你没有在该示例中使用非交换行为重载+
)。
答案 3 :(得分:0)
bind1st绑定函数的第一个参数,而bind2nd绑定第二个参数。如果像plus()仿函数这样的操作没有区别,因为在这两种情况下两个数字的加法保持相同,但是如果你做了像minus()这样的操作,那么根据你使用bind1st或bind2nd,例如5- 4和4-5将产生不同的结果,现在你得到了bind1st第一个参数绑定和bind2nd第二个参数绑定之间的区别。