對於家庭作業,我必須創建一個模板化的標準差功能,可以在任何容器上執行。下面是我有:所有容器都有.size()函數嗎?
template <typename Container>
double findMean(Container c, int count){
double sum = 0;
for (auto&& e : c){
sum += e;
}
sum /= count;
return sum;
}
template <typename Container>
double findStDev(Container c){
double mean = findMean(c, c.size());
std::cout << mean << std::endl;
for (auto&& e : c){
e -= mean;
e *= e;
}
mean = sqrt(findMean(c, c.size()));
return mean;
}
我第一次發現意味着我要在容器(n)的全尺寸來劃分,但是當我發現它的標準差,第二次,我需要除以大小1(n-1)。
.size()函數是否可用於所有C++容器?
除了內建數組之外,它可用於所有。 [現在](http://www.open-std.org/Jtc1/sc22/wg21/docs/papers/2014/n4017.htm) – tux3
順便說一句,你不需要':: size'來計算平均值。 – tumdum