错误:与"运算符+"不匹配(操作数类型为"std::vector<int>"和"int")



我正在努力解决分数背包问题(织机的最大值(,我的代码是:

#include <iostream>
#include <vector>
#include <algorithm>
using std::vector;
double get_optimal_value(int capacity, vector<int> weights, vector<int> values) {
double value = 0.0;
vector<int> ratio;
for(int i=0; i<values.size(); i++) {
ratio.push_back(values[i]/weights[i]);
}
int a = 0;
while(capacity>0){
auto it = std::max_element(ratio.begin(), ratio.end());
a = std::max(capacity, *it);
capacity -= *it * a;
values = values + a * *it;
}
return value;
}

我得到以下错误:

错误:"operator+"不匹配(操作数类型为"std::vector"和'int'(

对于行:

values = values + a * *it;

那行不是应该像value += a * (*it);吗?对我来说,这似乎是一个拼写错误。也许你混淆了valuevalues。后者是std::vector<int>。你肯定不能用这种方式把一个数字(double(加到vector上。

如果您想将a * (*it)添加到每个值,那么可能会使用一个简单的基于范围的for循环或类似std::transform的方法。或者,如果您想将该元素插入到向量中,那么像push_back()这样的东西可能会为您完成任务。

您可能想要进行

values.push_back(a * *it);

以将CCD_ 10的结果附加到CCD_。

相关内容

最新更新