인프런 커뮤니티 질문&답변
find_if(v.begin(), v.end(), CanDivideBy11());
작성
·
381
0
find_if(v.begin(), v.end(), CanDivideBy11());
이부분이 이해가 안갑니다 ㅜㅜ
구조체를 만들고 바로 구조체타입 이름으로 함수객체를 바로 쓰고있는데
함수객체를 만들고 쓸려면
CanDivideBy11 canBy11;
find_if(v.begin(), v.end(), canBy11(data));
이런식으로 해야하는거 아닌가요?
이렇게 하면 에러가 나니 아닌건 맞는데
전에 함수객체 시간에서 이해했던것이랑 달라서요 ㅜㅜ
답변 1
0
Rookiss
지식공유자
CanDivideBy11 canBy11;
위와 같이 함수 객체를 만든 다음에,
실질적으로 사용할 때는 canBy11(data) 이렇게 하는 것은 맞습니다.
그런데 find_if 내부 코드를 보면 _Pred(*_UFirst) 이 부분이
사실상 canBy11(data); 를 호출하는 부분입니다.
즉 find_if 의 3번째 인자에서는 함수 객체를 받고,
find_if 내부 코드에서 함수 객체의 operator()를 호출하고 있는 것이죠.




