If it is passed, is it passed by value or by reference?
void printMatrix(vector> *matrix);
...
vector> matr
Why not passing just the 2d vector?
void printMatrix(vector < vector<int> > matrix)
{
cout << "[";
for(int i=0; i<matrix.size(); i++)
{
cout << "[" << matrix[i][0];
for(int j=0; j<matrix[0].size(); j++)
{
cout << ", " << matrix[i][j];
}
cout << "]" << endl;
}
cout << "]" << endl;
}
vector < vector<int> > twoDvector;
vector<int> row(3,2);
for(int i=0; i<5; i++)
{
twoDvector.push_back(row);
}
printMatrix(twoDvector);
Since your function declaration:
void printMatrix(vector< vector<int> > *matrix)
specifies a pointer, it is essentially passed by reference. However, in C++, it's better to avoid pointers and pass a reference directly:
void printMatrix(vector< vector<int> > &matrix)
and
printMatrix(matrix1); // Function call
This looks like a normal function call, but it is passed by reference as indicated in the function declaration. This saves you from unnecessary pointer dereferences.
Well, first of all, you're creating it wrong.
vector<vector<int>> matrix1(3, vector<int>(3,0));
You can pass by value or by reference, or by pointer(not recommended). If you're passing to a function that doesn't change the contents, you can either pass by value, or by const reference. I would prefer const reference, some people think the "correct" way is to pass by value.
void printMatrix(const vector<vector<int>> & matrix);
// or
void printMatrix(vector<vector<int>> matrix);
// to call
printMatrix(matrix1);