如何解决此错误:二进制表达式('std :: vector <double>'和'double')无效的操作数?

oro*_*ion -2 c++ algorithm vector operators

我想获得一些陀螺仪读数的平均值,它涉及将一个std::vector<double>类型与一个双精度类型相除,但是出现以下错误,该错误报告

无效的二进制二进制操作数(“ std :: vector”和“ double”)

我该如何解决?


    double n_readings;
    std::vector<double> gyro_reading;
    for(int i = 0; i < n_readings; i++) {

        gyro_reading.push_back(gyro_z());
        msleep(1);

    }

    double average = gyro_reading/n_readings;
Run Code Online (Sandbox Code Playgroud)

Man*_*oor 5

您的调用gyro_reading/n_readings要求/在类型std::vector<T>和之间定义一个运算符T。标准向量没有这样的运算符。即使这样做,结果也可能是元素除法,而不是求和然后除法。

下列:

#include <iterator>
#include <numeric>
//...
double average = std::accumulate(std::begin(gyro_reading),std::end(gyro_reading), 0.0) / n_readings;
Run Code Online (Sandbox Code Playgroud)

将累加所有元素gyro_reading,operator+默认情况下使用进行归约,然后除以n_readings。另外,您可以使用gyro_reading.size()代替,n_readings因为这将始终保持一致。