So I am trying to solve a 0-1 KnapSack problem. I would like to have an empty vector or array that gets filled after the user gets prompted to select items. While I can get it running with set values I'm having trouble actually pushing the users input into the vector and then passing it into my KnapSack function.
#include <vector>
#include <bits/stdc++.h>
#include <queue>
using namespace std;
// Structure for an item which stores weight and corresponding
// value of Item
struct TarkovItems {
    int value, size;
    // Constructor
    TarkovItems(int value, int size) : value(value), size(size) {}
};
// Comparison function to sort Item according to val/weight ratio
bool cmp(struct TarkovItems a, TarkovItems b) {
    int r1 = (int) a.value / a.size;
    int r2 = (int) b.value / b.size;
    return r1 > r2;
}
// Main function to solve problem
int TarkovAlgorithm(int W, TarkovItems ItemArray[], int n) {
    //    sorting Item on basis of ratio
    sort(ItemArray, ItemArray + n, cmp);
    int curWeight = 0; // Current weight in knapsack
    int finalvalue = 0; // Result (value in Knapsack)
    // Looping through all Items
    for (int i = 0; i < n; i++) {
        // If adding Item won't overflow, add it completely
        if (curWeight + ItemArray[i].size <= W) {
            curWeight += ItemArray[i].size;
            finalvalue += ItemArray[i].value;
        }
    }
    // Returning final value
    return finalvalue;
}
// driver program to test above function
int main() {
    int userInputForBackpack;
    int userInputForItems;
    TarkovItems ItemArray[] = {{10, 20},{5,  30}};  //I would like to not hard code these values
    cout << "Are you using 1. A Raid Backpack, 2. A Berkut Backpack or 3. A Tactical Sling? "
         << "Please enter 1, 2, or 3." << endl;
    cin >> userInputForBackpack;
    switch (userInputForBackpack) {
        case 1:
            userInputForBackpack = 48;
            cout << "You selected Raid Backpack of size 48" << endl;
            break;
        case 2:
            userInputForBackpack = 20;
            cout << "You selected Berkut Backpack of size 20" << endl;
            break;
        case 3:
            userInputForBackpack = 6;
            cout << "You have selected a Tactical Sling of size 6" << endl;
            break;
    }
    cout << "Enter the number for each item you found. Type 0 to quit adding items." << endl;
    cout << "1. Mdr Assault rifle, 2. AS VAL. 3. VSS Vintorez " << endl;
    cin >> userInputForItems;
    //This is where I am having trouble allowing the user to select items and then
    //pushing them into the array.
    int n = sizeof(ItemArray) / sizeof(ItemArray[0]);
    cout << "Maximum value we can obtain = "
         << TarkovAlgorithm(userInputForBackpack, ItemArray, n);
    return 0;
