使用C ++中的迭代器实现统计函数

时间:2014-11-01 20:53:23

标签: c++ templates boost

我需要对使用标准迭代器定义的集合使用基本统计函数(如mean,variance,quantile)(例如,对于boost::multi_array的子数组)。这些是在标准库中实现的还是提升?

即使有现成的实现,我在模板中发现了这个有趣的练习。因为这些方法没有任何与结果类型相同的参数,所以我尝试按如下方式定义它们:

template<class TIter>
TIter::value_type mean(TIter begin, TIter end)
{
    int n = 1;
    TIter::value_type result = *begin;
    begin++;
    while(begin!=end)
    {
        n++;
        result+=*begin;
        begin++;
    }
    return result/n;
}

但显然无法编译:

stats.h:17:1: error: need ‘typename’ before ‘TIter::value_type’ because ‘TIter’ is a dependent scope

定义这样一个函数的最佳方法是什么?

0 个答案:

没有答案