"Accelerated C++"책을 통해 작업 중이며 연습 문제 중 하나에서 헤더의 'equal'함수를 에뮬레이션해야하며 지금까지 다음과 같은 세 가지 매개 변수를 사용하는 간단한 버전을 구현했습니다.'동일'템플릿 기능은 어떻게 구현됩니까? (술어 버전)
template <class iterType1, class iterType2>
bool cequal(iterType1 begin, iterType1 end, iterType2 e){
while(begin != end){
if(!(*begin == *e))
return false;
++begin;
++e;
}
return true;
}
및 제 4 매개 변수를 받아 들일 수 두 번째 버전 ...
template <class iterType1, class iterType2, class boolPred>
bool cequal(iterType1 begin, iterType1 end, iterType2 e, boolPred pred){
while(begin != end){
if(!pred(*begin, *e))
return false;
++begin;
++e;
}
return true;
}
내 질문이 그것을 할 수있는 이상적인 방법입니다? 또는이 두 함수가 병합 할 수 있습니까?
'equal_to'의 문제점은 2 개의 피연산자가 동일한 유형을 가지는 반면 그의 함수는 피연산자에 대해 2 개의 다른 유형이 있다고 예상한다는 것입니다. – Blindy
@Blindy : 그의 함수는 iterators에 대해 다른 유형을 가지고 있지만 요소의 유형이 같지 않다는 것을 의미하지는 않습니다. 어쨌든 두 가지 유형을 비교하기는 어려울 것이라고 생각합니다. 시도하면 오류가 발생합니다. 나는 그것을 실제로 문제로 보지 않는다. 그것이 그가 원하는 것이라면 그는 물론 다른 기능을 사용할 수 있습니다. –