【发布时间】:2020-02-19 23:25:55
【问题描述】:
lab26.cpp:在函数“int meanUsingIterators(const std::vector&)”中:
lab26.cpp:35:13: error: no match for ‘operator/’(操作数类型是 ‘double’ 和 ‘std::vector::const_iterator {aka __gnu_cxx::__normal_iterator >}’)
平均值=总和/结束;
lab26.cpp:在函数“int meanUsingPointers(const std::vector&)”中:
lab26.cpp:51:13:错误:'double' 和'std::vector::const_pointer {aka const int*}' 类型的无效操作数到二进制'operator/'。
平均值=总和/结束;
================================================ ==============================
#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);
}
【问题讨论】:
-
您正在尝试除以迭代器或指针。这也是错误所说的。但是您真正想要做的不是除以最后一个元素(或类似元素)的内存位置,而只是元素的数量。
-
通过用逗号分隔声明
end = v.size()与声明i的位置,将其声明为迭代器,您应该在单独的行上声明为整数。 -
@DetectivePikachu 不,那行已经在声明整数了。您正在查看错误的功能:P
-
声明
end的行都没有声明整数,你到底在说什么?