Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/templates/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在C++中使用迭代器实现统计函数_C++_Templates_Boost - Fatal编程技术网

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

在C++中使用迭代器实现统计函数,c++,templates,boost,C++,Templates,Boost,对于使用标准迭代器定义的集合,我需要使用基本的统计函数,如均值、方差、分位数,例如boost::multi_数组的子数组。这些是在标准库或boost中实现的吗 即使有现成的实现,我还是在模板中发现了这个有趣的练习。因为这些方法没有任何与结果类型相同的参数,所以我尝试按如下方式定义它们: template<class TIter> TIter::value_type mean(TIter begin, TIter end) { int n = 1; TIter::val

对于使用标准迭代器定义的集合,我需要使用基本的统计函数,如均值、方差、分位数,例如boost::multi_数组的子数组。这些是在标准库或boost中实现的吗

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

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;
}

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

编译器正在告诉您确切的问题。您需要将:TIter::value\u type更改为typename TIter::value\u type。然后您可以用std::acgregateBegin,end,0.0/std::distance开始,end;替换整个内容;。哦,你可能也想看看图书馆。@JerryCoffin你为什么不写这个作为答案?@dogjones:因为我又懒又笨?
stats.h:17:1: error: need ‘typename’ before ‘TIter::value_type’ because ‘TIter’ is a dependent scope