Я пытаюсь создать функцию для расчета стандартного отклонения. Я попытался использовать std::inner_product
и лямбда-выражения для op1 и op2 inner_product, чтобы изменить операции функции std::inner_product
.
К сожалению, я получаю ошибку компилятора при вызове функции в основном l oop:
error C2664: cannot convert parameter 1 from "std::vector<float,std::allocator<float>>" in "std::vector<std::vector<float,std::allocator<float>>,std::allocator<std::vector<float,std::allocator<float>>>> &"
Это мой код:
#include <numeric>
#include <cmath>
float stdfunc(std::vector<float> const & invector) {
float mean = std::accumulate(invector.begin(), invector.end(), 0.0) / invector.size();
float sq_sum = std::inner_product(invector.begin(), invector.end(), invector.begin(), 0.0,
[](float const & x, float const & y) {return x+y;},
[mean](float const & x, float const & y) {return (x-mean)*(y-mean);});
return std::sqrt(sq_sum / (invector.size() - 1));
}
Позвоните на главную:
int main(){
std::vector<float> testv {6,3,2,9,11,44,20};
float stdw = stdfunc(testv);
std::cout << "Standardabw: " << stdw << std::endl;
return 0;
}
Надеюсь, вы поможете мне.