std::bind1st、std::bind2nd
时间: 2023-10-19 22:31:21 浏览: 157
`std::bind1st` 和 `std::bind2nd` 是 C++ 标准库中的函数适配器,用于在函数对象中固定或绑定一个参数。
`std::bind1st` 的作用是将一个二元函数对象的第一个参数绑定为指定的值。例如,假设有一个二元函数对象 `Func`,我们可以通过 `std::bind1st(Func, value)` 将其第一个参数绑定为 `value`,从而创建一个新的一元函数对象。
示例代码:
```cpp
#include <functional>
#include <iostream>
int Func(int x, int y) {
return x + y;
}
int main() {
auto boundFunc = std::bind1st(std::ptr_fun(Func), 5);
std::cout << boundFunc(3) << std::endl; // 输出结果为 8
return 0;
}
```
在上面的示例中,`std::bind1st(std::ptr_fun(Func), 5)` 将 `Func` 函数的第一个参数绑定为 5,并返回一个新的一元函数对象 `boundFunc`。当我们调用 `boundFunc(3)` 时,实际上调用的是 `Func(5, 3)`,即输出结果为 8。
与之类似,`std::bind2nd` 的作用是将一个二元函数对象的第二个参数绑定为指定的值。用法与 `std::bind1st` 类似,只是绑定的是不同的参数。
希望以上信息能对你有所帮助!如果还有其他问题,请继续提问。
阅读全文