가속화 된 C++의 연습 문제를 해결하기 위해 노력하고 있으며 현재 제네릭 함수에 관한 장을 다루고 있습니다. 주어진 반복자의 value_type을 쓰고 싶었던 알고리즘을 발견했습니다. 나는 많은 도움이되는이 게시물 Default template arguments for function templates을 보았지만 나의 접근 방식이 올바른지 궁금합니다. 나는 그것이 사실 인 경우 나쁜 습관에 빠지기를 원하지 않습니다.함수 템플릿 : 기본 형식 매개 변수
template <class ForwardIt, class BinaryOp = std::greater<std::iterator_traits<ForwardIt>::value_type> >
ForwardIt maxInRange(ForwardIt begin, ForwardIt end, BinaryOp op = BinaryOp()) {
// test here to reduce the loop count by 1
if (begin == end)
return begin;
ForwardIt largest = begin;
while (++begin != end)
if (op(*begin, *largest))
largest = begin;
return largest;
}
하나 더 질문드립니다. BinaryOp 형식 매개 변수와 관련된 구문은 어떻게 작동합니까? 유형을 함수처럼 호출하는 것이 어떻게 대체 효과와 같은 효과를 만들어 내는지는 잘 모르겠습니다. 시간 내 줘서 고마워. 정말 감사.
키는 '입니다. operator() (some args ...);' –
user3159253