如果通过,它是通过价值或通过引用?如何将二维矢量传递给C++中的函数?
void printMatrix(vector<vector<int>> *matrix);
...
vector<vector<int>> matrix(3, vector<int>(3,0));
printMatrix(&matrix1);
如果通过,它是通过价值或通过引用?如何将二维矢量传递给C++中的函数?
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
这看起来像一个正常的函数调用,但它是通过引用传递在函数表示宣言。这可以避免不必要的指针取消引用。
嗯,首先,你错了。
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);
不要忘记在嵌套模板的空间,即'矢量>',否则一些编译器会抱怨无效右移。 –
casablanca
2010-10-30 23:51:36
我只是使用你的评论作为注释。但是有没有相关的编译器在哪里仍然是一个问题? – 2010-10-30 23:55:56