STLコンテナの合計を計算するSum()関数を作成したいとします。関数は、イテレータ型のテンプレート引数を使用し、以下のように引数として2回の反復子を受け入れ:イテレータを引数として渡すときに関数呼び出しが一致しない
template <typename T>
double Sum(typename T::const_iterator start, typename T::const_iterator end)
{
typename T::const_iterator i3;
double sum2=0.0;
for (i3=start; i3 != end; ++i3)
{
sum2 += (i3);
}
return sum2;
}
と(メインで)私はのような関数を呼び出す:
vector<double>::const_iterator vec_start=myvector.begin();
vector<double>::const_iterator vec_end=myvector.end();
cout<<"The sum of the vector is "<<Sum(vec_start, vec_end)<<endl;
しかし、それは無いと言っていますSum()に一致する関数呼び出し。関数のシグネチャがTなので、イテレータを渡し、イテレータのパラメータを渡す前にデータ型を指定する必要があるため、いくつかの議論を読んでいます。
std :: accumulateには何らかの理由がありますか? – Skym0sh0
コンテナイテレータを実践するだけの宿題はありません。 –