I have a question regarding this program. I am a beginner when it comes to programming and c++, and I'm trying to figure out two things.
- why is this program not compiling (error: Using uninitialized memory 'total' - I have it defined as a variable??). 
- Could someone explain how the function outside of the main ( - sumUpTo) works? Specifically- & vecand- total, as I've never seen them before. Thanks.
/* 1) read in numbers from user input, into vector    -DONE
    2) Include a prompt for user to choose to stop inputting numbers - DONE
    3) ask user how many nums they want to sum from vector -
    4) print the sum of the first (e.g. 3 if user chooses) elements in vector.*/
#include <iostream>
#include <string>
#include <vector>
#include <numeric> //for accumulate
int sumUpTo(const std::vector<int>& vec, const std::size_t total)
{
    if (total > vec.size())
        return std::accumulate(vec.begin(), vec.end(), 0);
    return std::accumulate(vec.begin(), vec.begin() + total, 0);
}
int main()
{
    std::vector<int> nums;
    int userInput, n, total;
    std::cout << "Please enter some numbers (press '|' to stop input) " << std::endl;
    while (std::cin >> userInput) {
        if (userInput == '|') {
            break; //stops the loop if the input is |.
        }
        nums.push_back(userInput); //push back userInput into nums vector.
    }
    std::cout << "How many numbers do you want to sum from the vector (the numbers you inputted) ? " << std::endl;
    std::cout << sumUpTo(nums, total);
    return 0;
}
 
    