我想编写一个通用函数来计算STL容器中元素的总和。我的处理方式如下(t
是一个容器):
template <typename T> double Sum(const T& t){
typename T::reverse_iterator rit = t.rbegin();
double dSum = 0.;
while( rit != t.rend() ){
dSum += (*rit);
++rit;
}
return dSum;
}
但是我遇到很多错误。我猜问题出在第二行定义迭代器的地方?将不胜感激:)
最佳答案
应该
typename T::const_reverse_iterator rit = t.rbegin();
由于
t
是const
,并且rbegin
容器的const
返回const_reverse_iterator
,因此无法将其转换为reverse_iterator
。使用
std::accumulate
而不是您自己的函数会更好,像这样double result = std::accumulate(c.rbegin(), c.rend(), 0.0);