[C++] bind
Updated:
개요
- 함수 객체 생성 시 인자를 지정
- placeholders::_x를 이용해 전달된 인자 중 x번째에 있는 값을 bind
- 인자를 여러개 전달해도 bind된 인자 외에는 무시
코드
#include <functional>
#include <iostream>
using namespace std;
void func(int x, int y) { cout << x << ", " << y << endl; }
int main() {
auto f1 = bind(func, placeholders::_1, placeholders::_2);
f1(1, 2);
f1(2, 3);
f1(3, 4, 5, 6, 7);
cout << "------" << endl;
auto f2 = bind(func, placeholders::_1, 10);
f2(1);
f2(2, 3, 4);
cout << "------" << endl;
auto f3 = bind(func, placeholders::_2, 10);
f3(1, 2);
f3("a", 3, 4, "b");
cout << "------" << endl;
auto f4 = bind(func, 1, placeholders::_3);
f4(5, 6, 7);
f4("a", 3, 4, "b");
cout << "------" << endl;
auto f5 = bind(func, 1, placeholders::_1);
f5(5);
f5(3, 4, "b");
return 0;
}
실행 결과
1, 2
2, 3
3, 4
------
1, 10
2, 10
------
2, 10
3, 10
------
1, 7
1, 4
------
1, 5
1, 3