I am trying to create an adjacency list graph representation using a vector(V) of vectors(v). My goal is for every new vertex value entered, I increment the size of the V*, and insert the new value into the open spot, which would then be the starting value of v**.
I then want to create an edge between the new value entered, and another value that already exists in the adjacency matrix.
However, with my code I keep getting the "vector subscript out of range error" once I enter the secIndexVal. I've already tried making the initial value of numberIndices larger (up to 10) as well as the things I've mentioned in the code. Thank you.
*The Vector of vectors, I notated as 'V' **A vector within V, I notated as 'v'
int indexVal;
int secIndexVal;
int numberIndices = 0;
bool valIsFound = false;
vector <vector <int>> vecOfVectors(numberIndices);
int main()
{
cout << "\nEnter first value: ";
cin >> indexVal;
cout << "\nEnter second value: ";
cin >> secIndexVal;
numberIndices++;
vecOfVectors.resize(numberIndices);
vecOfVectors[numberIndices - 1].push_back(indexVal);
vecOfVectors[numberIndices - 1].push_back(secIndexVal);
//pushes back the values of indexVal then secIndexVal to index 0
//I tried changing the value within the brackets to [numberIndices]
numberIndices++;
vecOfVectors.resize(numberIndices);
vecOfVectors[numberIndices].push_back(secIndexVal);
vecOfVectors[numberIndices].push_back(indexVal);
//pushes back the values of secIndexVal then indexVal to index 1
//I tried changing the value within the brackets to [numberIndices + 1]
cout << "\nExit? (y/n)";
cin >> userPrompt;
while (userPrompt != 'y')
{
cout << "\nEnter a new value: ";
cin >> indexVal; //new value
numberIndices++;
vecOfVectors.resize(numberIndices);
cout << "\n enter a value to connect it to: ";
cin >> secIndexVal; //old value
vecOfVectors[numberIndices - 1].push_back(indexVal); //new value given newly opened spot on vecOfVectors
for (int j = 0; j < numberIndices; ++j)
{
if (vecOfVectors[j].at(0) == secIndexVal)
{
valIsFound = true;
vecOfVectors[j].push_back(indexVal); //the new value is attached to the adjacency list at the index of the old value
}
}
if (valIsFound == true)
{
vecOfVectors[numberIndices - 1].push_back(secIndexVal); //the old value is attached to the adjacency list at the index of the new value
}
cout << "\nExit? (y/n)";
cin >> userPrompt;
}
}