簡體   English   中英

如何將二維向量傳遞給 C++ 中的函數?

[英]How to pass 2-D vector to a function in 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

這看起來像一個普通的函數調用,但它是通過引用傳遞的,如函數聲明中所示。 這可以避免不必要的指針取消引用。

為什么不只傳遞二維向量?

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 引用,有些人認為“正確”的方法是按值傳遞。

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

// or
void printMatrix(vector<vector<int>> matrix);

// to call
printMatrix(matrix1);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM