如果它被传递了,那么它是按值传递还是按引用传递?
void printMatrix(vector<vector<int>> *matrix);
...
vector<vector<int>> matrix(3, vector<int>(3,0));
printMatrix(&matrix1);
自从你的函数声明:
void printMatrix(vector< vector<int> > *matrix)
指定一个指针,本质上是按引用传递。然而,在C++中,最好避免使用指针,直接传递引用更好:
void printMatrix(vector< vector<int> > &matrix)
和
printMatrix(matrix1); // Function call
看起来像是普通的函数调用,但根据函数声明,它是通过引用传递的。这样可以避免不必要的指针解引用。
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);
vector<vector<int>> matrix1(3, vector<int>(3,0));
你可以按值传递、按引用传递或按指针传递(不建议)。如果你要传递给一个不修改内容的函数,你可以通过值传递或通过const引用传递。我更喜欢const引用,有些人认为按值传递是“正确”的方式。
void printMatrix(const vector<vector<int>> & matrix);
// or
void printMatrix(vector<vector<int>> matrix);
// to call
printMatrix(matrix1);
vector<vector<int> >
,否则某些编译器会报告不合法的右移错误。 - casablanca