向量循环抛出2个错误

Vector loops throwing 2 errors?

本文关键字:2个 错误 循环 向量      更新时间:2023-10-16

lab26.cpp:在函数"int meanUsingIterators(const std::vector&("中:
lab26.cpp:35:13:错误:与"operator/"不匹配(操作数类型为"double"answers"std::vector::const_iterator{aka __gnu_cxx::__normal_iterator>}"(

mean=总和/结束;

lab26.cpp:在函数"int meanUsingPointers(const std::vector&("中:
lab26.cpp:51:13:错误:二进制"operator/"的类型为"double"answers"std::vector::const_pointer{aka const int*}"的操作数无效。

mean=总和/结束;

=================================================

#include <vector>
#include <cmath>
using namespace std;
int meanUsingIndexing(const vector<int>& v)   
{
vector<int>::size_type i, end = v.size();
double sum = 0;
double mean;
for(i = 0; i < end; i++)
{
sum += v.at(i); // or sum += v[i]
}
mean = sum / end;
return round(mean);
}
int meanUsingIterators(const vector<int>& v)  
{
vector<int>::const_iterator i, end = v.cend();
double sum = 0;
double mean;
for(i = v.cbegin(); i < end; i++)      
{
sum += *i;
}
mean = sum / end;
return round(mean);
}
int meanUsingPointers(const vector<int>& v)    
{
vector<int>::const_pointer i, end = v.data() + v.size();
double sum = 0;
double mean;
for(i = v.data(); i < end; i++)
{
sum += *i;
}
mean = sum / end;
return round(mean);
}

no match for ‘operator/’ (operand types are ‘double’ and ‘std::vector::const_iterator

因此,double和迭代器之间带有除法符号是导致这种情况的原因。

end = v.cend();时,不能使用end作为元素的数量(以获得平均值(。用mean = sum / v.size();替换mean = sum / end;

invalid operands of types ‘double’ and ‘std::vector::const_pointer

这里是doubleconst*,它们之间有一个除法符号,这就是问题所在。

end = v.data() + v.size();时,不能使用end作为元素的数量(以获得平均值(。用mean = sum / v.size();替换mean = sum / end;