std::bind
- std::bind를 알려면 std::function을 알아야 해요
std::function
- C+11에서 나온 함수 포인터로 사용 할 수 있는 std::function
- std::function<return type(parameters)> name = &함수 이런 식으로 선언을 해요
- 예) std::function<bool(int, int)> myFunc = &calculate;
- 이때 calculate는 이미 bool calculate(int, int) 라는 형식을 갖고 선언이 되있어요.
그러면 다시 std::bind를 볼께요
std::bind
- std::bind는 반환값이 std::function 인데요 특정 인자를 갖거나 특정 객체의 함수를 부르도록 구체적인 std::function을 제공해요
- 위의 예) std::function<bool(int, int)> myFunc = &calculate; 이렇게 하면 나중에 부를 때 myFunc(1,2) 이런 식으로 사용 하는데요.
- myFunc = std::bind(&calculate, 1, std::placeholders_2) 하면 첫번째 인자로 1을 고정하고 두번째 인자는 유동적으로 사용. 예) myFunc(2) <= 첫번째 인자로 1은 이미 들어가 있음.
std::placeholders
- 위의 사용 예 에서 보신 것처럼 std::placeholders란 std::bind와 같이 쓰여요.
- 몇번째 자리 인자는 고정으로 두지 않고 동적으로 받아서 사용하겠다 한다면 인자 자리에 std::placeholders_::N 이라고 써줘요.
- 여기서 N은 몇 번째 인자로 사용할건지를 나타내는 수입니다. 그래서 위에서는 두번째 인자로 사용할 것이니 std::placeholders::_2가 사용되었습니다.
- 몇번째 자리 인자는 고정으로 두지 않고 동적으로 받아서 사용하겠다 한다면 인자 자리에 std::placeholders_::N 이라고 써줘요.
'개발 관련 기타 > C++' 카테고리의 다른 글
C++) [스마트 포인터] weak_pointer, unique_pointer, shared_pointer (0) | 2020.09.28 |
---|---|
C++) Reader-Writer 문제로 본 mutex와 condition variable (0) | 2020.06.29 |
C++) RAII 디자인 패턴 (0) | 2020.05.28 |
(C언어) epoll 정의 (0) | 2019.12.02 |
[프로그래머스] (C++) 점프와 순간이동 (0) | 2019.12.02 |