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

时间:2019-06-17 12:48:38

标签: 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;

1 个答案:

答案 0 :(得分: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;

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