2010-10-30 107 views

回答

14

因为你的函数声明:

void printMatrix(vector< vector<int> > *matrix) 

指定一个指针,它基本上是按引用传递。然而,在C++中,最好避免指针,并通过直接的引用:

void printMatrix(vector< vector<int> > &matrix) 

printMatrix(matrix1); // Function call 

这看起来像一个正常的函数调用,但它是通过引用传递在函数表示宣言。这可以避免不必要的指针取消引用。

1

嗯,首先,你错了。

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); 
+1

不要忘记在嵌套模板的空间,即'矢量>',否则一些编译器会抱怨无效右移。 – casablanca 2010-10-30 23:51:36

+0

我只是使用你的评论作为注释。但是有没有相关的编译器在哪里仍然是一个问题? – 2010-10-30 23:55:56