недопустимый операнд для двоичного выражения, читающего массив структуры - PullRequest
0 голосов
/ 02 марта 2019

Я пытаюсь реализовать знаменитую проблему дробного ранца.Мне нужна структура, чтобы связать значения и веса.Теперь я хочу прочитать массив struct item, но он дает мне следующее:

ошибка недопустимого выражения

#include <iostream>
#include <vector>
#include <string>

using std::vector;
using namespace std;

// Structure for an item which stores weight and corresponding
// value of Item
struct Item
{
    int value, weight;
    // Constructor
    Item(int value, int weight) : value(value), weight(weight) {}
};

int main()
{    
    int n;
    int W;
    std::cin >> n >> W;

    vector<Item> arr(n);
    for (int i = 0; i < n; i++) {
        std::cin >> arr[i];
    }

    cout << "Maximum value we can obtain = " << fractionalKnapsack(W, arr, n);
    return 0;
}

1 Ответ

0 голосов
/ 02 марта 2019

arr - это vector объектов типа Item.Чтобы получить доступ к Item полям, вы должны сделать это, используя . или ->, если вы используете pointer.Используя cin >> arr[i], вы пытаетесь ввести char для объекта Item.

Попробуйте это: std::cin >> arr[i].value

...