gpt4 book ai didi

c++ - std::inner_product 计算 vector 的标准差

转载 作者:行者123 更新时间:2023-12-02 10:19:09 26 4
gpt4 key购买 nike

我正在尝试创建一个函数来计算标准偏差。
我尝试使用 std::inner_product和用于内部产品 op1 和 op2 的 lambda 表达式来修改 std::inner_product 的操作功能。

不幸的是,在主循环中调用函数时出现编译器错误:

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

我希望你能帮助我。

最佳答案

错误消息表示参数的类型为 std::vector<float>

std::vector<float> testv {6,3,2,9,11,44,20};
float stdw = stdfunc(testv);

std::vector<std::vector<float>> 的函数参数类型不对应.

所以检查函数声明。不排除函数声明和函数定义可以不同。

关于c++ - std::inner_product 计算 vector 的标准差,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60957758/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com