Я работаю над книгой «Ускоренный C ++», и одно из упражнений требует, чтобы мы эмулировали функцию «равно» в заголовке, и до сих пор я реализовал простую версию, которая принимает три параметра следующим образом:
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;
}
и вторая версия, которая может принимать четвертый параметр ...
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;
}
Мой вопрос, это идеальный способ сделать это?или эти две функции можно объединять?