![](/img/trans.png)
[英]Error: no match for 'operator+' operand types are 'std::vector <int>' and 'int' in c++
[英]error: no match for ‘operator+’ (operand types are ‘std::vector<int>’ and ‘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;
你可能想做
values.push_back(a * *it);
到 append 的結果a * *it
到vector
。
該行不應該類似於value += a * (*it);
? 這對我來說似乎是一個錯字。 可能,您對value
和values
感到困惑。 后一個是std::vector<int>
。 您肯定不能以這種方式將數字( double
)添加到vector
中。
如果您想為每個值添加a * (*it)
,那么可能一個簡單的基於范圍的 for 循環將起作用,或者類似於std::transform
。 或者,如果您想將該元素插入向量中,那么類似push_back()
之類的東西可能會為您完成這項工作。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.