我想编写一个通用函数来计算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();


由于tconst,并且rbegin容器的const返回const_reverse_iterator,因此无法将其转换为reverse_iterator

使用std::accumulate而不是您自己的函数会更好,像这样

double result = std::accumulate(c.rbegin(), c.rend(), 0.0);

08-17 15:20