인프런 커뮤니티 질문&답변
find_if(v.begin(), v.end(), CanDivideBy11());
작성
·
389
0
find_if(v.begin(), v.end(), CanDivideBy11());
이부분이 이해가 안갑니다 ㅜㅜ
구조체를 만들고 바로 구조체타입 이름으로 함수객체를 바로 쓰고있는데
함수객체를 만들고 쓸려면
CanDivideBy11 canBy11;
find_if(v.begin(), v.end(), canBy11(data));
이런식으로 해야하는거 아닌가요?
이렇게 하면 에러가 나니 아닌건 맞는데
전에 함수객체 시간에서 이해했던것이랑 달라서요 ㅜㅜ
퀴즈
50%나 틀려요. 한번 도전해보세요!
C++ STL Vector가 일반 배열보다 가지는 가장 큰 장점은 무엇일까요?
메모리 접근 속도가 훨씬 빠릅니다.
크기가 자동으로 늘어나고 줄어듭니다.
중간 요소 삽입/삭제가 매우 효율적입니다.
데이터를 정렬된 상태로 유지합니다.
답변 1
0
Rookiss
지식공유자
CanDivideBy11 canBy11;
위와 같이 함수 객체를 만든 다음에,
실질적으로 사용할 때는 canBy11(data) 이렇게 하는 것은 맞습니다.
그런데 find_if 내부 코드를 보면 _Pred(*_UFirst) 이 부분이
사실상 canBy11(data); 를 호출하는 부분입니다.
즉 find_if 의 3번째 인자에서는 함수 객체를 받고,
find_if 내부 코드에서 함수 객체의 operator()를 호출하고 있는 것이죠.




