"Accelerated C++"の勉強中ですが、演習の1つでは、ヘッダーの 'equal'関数をエミュレートする必要があります。これまでのところ、次の3つのパラメータを取る簡単なバージョンを実装しました:テンプレートテンプレート関数はどのように実装されていますか? (述語版)
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;
}
私の質問は、これはそれを行うための理想的な方法ですか?またはこれらの2つの関数は併合可能ですか?
'equal_to 'の問題は、2つのオペランドが同じ型を持つことを期待していますが、その関数には2つの異なる型があります。 – Blindy
@Blindy:彼の関数はイテレータの型が異なりますが、要素の型が同じではないというわけではありません。とにかく2つの異なるタイプを比較したいとは思わないでしょう。そうしようとするとエラーが発生します。私はそれを問題として実際には見ない。それが彼が望むものならば、彼はもちろん異なる機能を使うことができます。 –