【发布时间】:2020-05-30 22:24:12
【问题描述】:
我正在执行一项任务,我们必须制造车辆,将它们存放在陈列室中,然后将陈列室存放在经销商处。要做的事情我已经建立了,vector(Vehicle) carVector;在“Showroom.h”中,和vector(vector(Vehicle)) showroomVector;在“Dealsership.h”中
目前我正在尝试在经销商处显示汽车的平均价格。我目前的功能是这样的
float Dealership::GetAveragePrice() {
vector<vector<Vehicle>> showroomVector;
float sum = 0.0f;
float avgSum = 0.0f;
unsigned int i;
unsigned int j;
for (i = 0; i < showroomVector.size(); i++) {
for (j = 0; j < showroomVector.at(i).size(); j++) {
sum = sum + showroomVector.at(i).at(j).GetPrice;
}
}
avgSum = sum/((float)(i*j));
return avgSum;
}
getprice函数在Vehicle.cpp中,如下
float Vehicle::GetPrice() {
return this->price;
}
我基本上需要将所有陈列室中每辆车的价格相加,然后除以 i*j 以找到经销商的平均值,但我无法正确访问二维向量中的数据
增加陈列室的功能(在cmets中提到)
void Dealership::AddShowroom(Showroom s) {
if (showroomVector.size() == capacity) {
cout << "Dealership is full, can't add another showroom!\n";
}
else if (showroomVector.size() < capacity) {
vector<Vehicle> s;
showroomVector.push_back(s);
}
}
【问题讨论】:
-
您的示例代码根本没有将任何项目放入局部变量
showroomVector,因此总和应该为0。 -
sum = sum + showroomVector.at(i).at(j).GetPrice;在最后的函数调用中缺少()。 -
showroomVector.at(i).at(j).GetPrice;正在尝试将指针添加到您的总和。不确定这是复制粘贴错误还是什么。 -
在你显示的代码中
vector<Vehicle> s;被添加为空 -
还要保留 (),它们在函数调用中是必需的,否则您将传递函数指针。
标签: c++ for-loop vector 2d-vector