Si elle est réussie, est-elle transmise par valeur ou par référence?Comment passer un vecteur 2D à une fonction en C++?
void printMatrix(vector<vector<int>> *matrix);
...
vector<vector<int>> matrix(3, vector<int>(3,0));
printMatrix(&matrix1);
Si elle est réussie, est-elle transmise par valeur ou par référence?Comment passer un vecteur 2D à une fonction en C++?
void printMatrix(vector<vector<int>> *matrix);
...
vector<vector<int>> matrix(3, vector<int>(3,0));
printMatrix(&matrix1);
Depuis votre déclaration de fonction:
void printMatrix(vector< vector<int> > *matrix)
spécifie un pointeur, il est essentiellement passé par référence. Cependant, en C++, il est préférable d'éviter les pointeurs et passer une référence directement:
void printMatrix(vector< vector<int> > &matrix)
et
printMatrix(matrix1); // Function call
Cela ressemble à un appel de fonction normale, mais il est passé par référence comme indiqué dans la fonction déclaration. Cela vous évite des déréférences inutiles.
Eh bien, tout d'abord, vous créez le problème.
vector<vector<int>> matrix1(3, vector<int>(3,0));
Vous pouvez passer par valeur, par référence ou par pointeur (non recommandé). Si vous passez à une fonction qui ne modifie pas le contenu, vous pouvez passer par valeur, ou par référence const. Je préférerais la référence const, certaines personnes pensent que le "bon" moyen est de passer par la valeur.
void printMatrix(const vector<vector<int>> & matrix);
// or
void printMatrix(vector<vector<int>> matrix);
// to call
printMatrix(matrix1);
Ne pas oublier un espace dans le modèle imbriqué, à savoir 'vecteur>', sinon certains compilateurs se plaindront décalages à droite invalides. –
casablanca
Je vais juste utiliser votre commentaire comme une note à cet effet. Mais y a-t-il des compilateurs pertinents là où c'est toujours un problème? –