인프런 영문 브랜드 로고
인프런 영문 브랜드 로고

인프런 커뮤니티 질문&답변

rcasio님의 프로필 이미지
rcasio

작성한 질문수

[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part1: C++ 프로그래밍 입문

algorithm

find_if(v.begin(), v.end(), CanDivideBy11());

작성

·

369

0

find_if(v.begin(), v.end(), CanDivideBy11());
이부분이 이해가 안갑니다 ㅜㅜ
구조체를 만들고 바로 구조체타입 이름으로 함수객체를 바로 쓰고있는데
함수객체를 만들고 쓸려면
CanDivideBy11 canBy11;
find_if(v.begin(), v.end(), canBy11(data));
이런식으로 해야하는거 아닌가요?
이렇게 하면 에러가 나니 아닌건 맞는데
전에 함수객체 시간에서 이해했던것이랑 달라서요 ㅜㅜ

답변 1

0

Rookiss님의 프로필 이미지
Rookiss
지식공유자

CanDivideBy11 canBy11;
위와 같이 함수 객체를 만든 다음에,
실질적으로 사용할 때는 canBy11(data) 이렇게 하는 것은 맞습니다.

그런데 find_if 내부 코드를 보면 _Pred(*_UFirst) 이 부분이 
사실상 canBy11(data); 를 호출하는 부분입니다.

즉 find_if 의 3번째 인자에서는 함수 객체를 받고,
find_if 내부 코드에서 함수 객체의 operator()를 호출하고 있는 것이죠.

rcasio님의 프로필 이미지
rcasio

작성한 질문수

질문하기