알고리즘의 매개 변수로는 함수 대신 함수 객체가 괜찮다.

사실 이건 함수객체가 엄청난 기능이 있어서라기 보다 컴파일 타임에 코드가 구성 되는 템플릿의 특성에 기인한 것이다.즉 함수 포인터를 넘기는 경우 동일한 인자를 가진 함수들을 교체가 가능하지만 포인터로서 사용함으로써 한번의 참조가 더 일어나게 된다.

하지만 여기서 언급하는 함수객체는 STL의 대부분의 알고리즘이나 함수들이 템플릿 프로그래밍 되어 있으므로 함수객체를 코딩하고 알고리즘에 함수객체를 컴파일 타임에 결정해 줌으로써 템플릿 확장이 일어나 최적화가 되는 것이다. 마치 인라인 확장과 동일 내용이다.

물론 함수 포인터의 경우도 컴파일 타임에 분석해서 최적화를 할수 있을지 모르겠지만 현재의 컴파일러 대부분이 지원하지 않는다고 한다.

그리고 함수객체를 사용하면 컴파일러 마다 서로 약간씩 다르거나 버그 스러운 면을 자연스로럽게 비껴갈수 있다. 자세한 내용은 책을 참조하자.

댓글 남기기

이메일은 공개되지 않습니다. 필수 입력창은 * 로 표시되어 있습니다