我只是想创建一个简单的 sum 函数模板来使用 STL 在容器中查找双精度数的总和。首先,我只是想用一个列表来测试它,但我在第 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;
}
我得到两个编译器错误:
c:\users...\iterators.cpp(28): 错误 C2839: 重载 'operator ->' 的返回类型 'const double *' 无效
c:\users...\iterators.cpp(28): error C2039: 'second' : is not a member of 'std::_List_const_iterator<_Mylist>'
即使我从 const_iterator 更改为 iterator,我仍然会收到类似的错误,
错误 C2839:重载的“运算符 ->”的返回类型“双 *”无效
我在这里使用错误的指针还是什么?谢谢!