In addition to what @Saurav posted, newMatrix
is empty so you cannot assign values to newMatrix[i][j]
. You can fix this by initializing the vectors with a given size:
vector< vector<int> > resizeVector(vector< vector<int> > m)
{
vector< vector<int> > newMatrix(m.size());
int i,j;
for (i = 0; i < m.size(); i++)
{
newMatrix[i].resize(m[i].size());
for(j = 0; j < m[i].size(); j++)
{
newMatrix[i][j] = m[i][j];
}
}
return (newMatrix);
}
Before the for-loops we initialize newMatrix
to have m.size()
many empty vectors inside of it (the vectors are empty due to their default constructor). During each iteration of the outer for-loop we ensure that each vector within newMatrix
has the correct size using the resize
member function.
Note that if you want a copy of a vector you can simply just write:
vector< vector<int> > newMatrix(m);