我想获取一些陀螺仪读数的平均值,这涉及将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;
答案 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
,因为这将始终保持一致。