簡體   English   中英

錯誤:'operator+' 不匹配(操作數類型是 'std::vector<int> ' 和 'int')</int>

[英]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 * *itvector

該行不應該類似於value += a * (*it); ? 這對我來說似乎是一個錯字。 可能,您對valuevalues感到困惑。 后一個是std::vector<int> 您肯定不能以這種方式將數字( double )添加到vector中。

如果您想為每個值添加a * (*it) ,那么可能一個簡單的基於范圍的 for 循環將起作用,或者類似於std::transform 或者,如果您想將該元素插入向量中,那么類似push_back()之類的東西可能會為您完成這項工作。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM