STL を使用してコンテナー内の double の合計を見つける単純な合計関数テンプレートを作成しようとしています。まず、これをリストでテストしようとしていますが、28 行目でエラーが発生し続けます。
#include <iterator>
#include <list>
#include <iostream>
using namespace std;
template <typename T>
double Sum(typename T& container)
{// sum of a container with doubles
typename T::const_iterator iterator_begin = container.begin();
typename T::const_iterator iterator_end = container.end();
double my_sum = 0;
for (iterator_begin; iterator_begin != iterator_end; iterator_begin++)
my_sum += iterator_begin->second; // this is line 28
return my_sum;
}
int main()
{
list<double> test_list(10,5.1); // create a list of size 10 with values 5.1
cout << Sum(test_list) << endl;
return 0;
}
2 つのコンパイラ エラーが発生します。
c:\users...\iterators.cpp(28): エラー C2839: オーバーロードされた 'operator ->' の戻り値の型 'const double *' が無効です
c:\users...\iterators.cpp(28): エラー C2039: 'second' : 'std::_List_const_iterator<_Mylist>' のメンバーではありません
const_iterator から iterator に変更しても、同様のエラーが発生します。
エラー C2839: オーバーロードされた 'operator ->' の戻り値の型 'double *' が無効です
ここで間違ったポインタを使用していますか?ありがとう!