在C++中使用迭代器实现统计函数
对于使用标准迭代器定义的集合,我需要使用基本的统计函数,如均值、方差、分位数,例如boost::multi_数组的子数组。这些是在标准库或boost中实现的吗 即使有现成的实现,我还是在模板中发现了这个有趣的练习。因为这些方法没有任何与结果类型相同的参数,所以我尝试按如下方式定义它们:在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
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