Ну, во-первых, вы создаете это неправильно.
vector<vector<int>> matrix1(3, vector<int>(3,0));
Вы можете передавать по значению или по ссылке, или по указателю (не рекомендуется). Если вы переходите к функции, которая не изменяет содержимое, вы можете передать либо по значению, либо по константной ссылке. Я бы предпочел константную ссылку, некоторые люди думают, что «правильный» способ - передать по значению.
void printMatrix(const vector<vector<int>> & matrix);
// or
void printMatrix(vector<vector<int>> matrix);
// to call
printMatrix(matrix1);