1、什么是C++ STL bind1st bind2nd bind

C++ STL bind1st bind2nd bind是C++标准模板库(STL)中的一组函数,它们可以将一个函数绑定到一个或多个参数上,从而创建一个新的函数,这个新函数可以接受其他参数,并返回绑定函数的结果。bind1st和bind2nd函数可以把一个参数固定,而bind函数可以把多个参数固定。

2、bind1st的使用方法

bind1st函数可以把函数的第一个参数固定,返回一个新的函数,新函数可以接受其他参数。例如,有一个函数add,它接受两个参数,它的功能是把两个参数相加,如果使用bind1st绑定第一个参数,则可以创建一个新的函数add2,它接受一个参数,返回绑定第一个参数后的结果,代码如下:

int add(int a, int b) {
return a + b;
}
int main() {
auto add2 = std::bind1st(add, 10);
int result = add2(20);
std::cout << result << std::endl;
return 0;
}

执行这段代码,输出结果是30,表明绑定第一个参数后,新函数add2可以接受一个参数,返回绑定第一个参数后的结果。

3、bind2nd的使用方法

bind2nd函数可以把函数的第二个参数固定,返回一个新的函数,新函数可以接受其他参数。例如,有一个函数sub,它接受两个参数,它的功能是把第一个参数减去第二个参数,如果使用bind2nd绑定第二个参数,则可以创建一个新的函数sub2,它接受一个参数,返回绑定第二个参数后的结果,代码如下:

int sub(int a, int b) {
return a - b;
}
int main() {
auto sub2 = std::bind2nd(sub, 10);
int result = sub2(20);
std::cout << result << std::endl;
return 0;
}

执行这段代码,输出结果是10,表明绑定第二个参数后,新函数sub2可以接受一个参数,返回绑定第二个参数后的结果。

4、bind的使用方法

bind函数可以把函数的多个参数固定,返回一个新的函数,新函数可以接受其他参数。例如,有一个函数mul,它接受三个参数,它的功能是把三个参数相乘,如果使用bind绑定多个参数,则可以创建一个新的函数mul2,它接受一个参数,返回绑定多个参数后的结果,代码如下:

int mul(int a, int b, int c) {
return a * b * c;
}
int main() {
auto mul2 = std::bind(mul, 10, 20, std::placeholders::_1);
int result = mul2(30);
std::cout << result << std::endl;
return 0;
}

执行这段代码,输出结果是6000,表明绑定多个参数后,新函数mul2可以接受一个参数,返回绑定多个参数后的结果。