簡體   English   中英

C ++傳遞向量 <vector<STRUCT> &gt;用於修改

[英]C++ Passing a vector<vector<STRUCT> > for modifying

假設我有一個

vector<vector<foobar> > vector2D(3);
for(int i=0;i<3;i++)
   vector2D[i].resize(3);

因此,一個總共包含9個foobar類型元素的3x3向量。

我知道要將“ vector2D”傳遞給函數以修改“ vector2D”中的某些值。 例如,如果foobar包含

struct foobar{
       int *someArray;
       bool someBool;
}

我想將“ vector2D”傳遞給修改vector2D的函數,如下所示:

vector2D[0][0].someArray = new int[100];
vector2D[0][0].someArray[49] = 1;

該函數不應返回任何內容(通過引用調用)。

這甚至可能嗎?

是的,這是可能的。 您只需要將其作為非常量引用傳遞即可。 就像是:

void ModifyVector( vector< vector< foobar > > & v )
{
    v[0][0].someArray = new int[100];
    v[0][0].someArray[49] = 1;
}

vector<vector<foobar> > vector2D(3);
ModifyVector( vector2D );

進一步說明:如果在向量中使用它,則可能應該為foobar結構實現copy構造函數。

當然,只需通過引用傳遞您的vector2D:

void foo(vector<vector<foobar> >& v)
{
    v[0].resize(3);
    v[0][0].someArray = new int[100];
    v[0][0].someArray[49] = 1
}

並將其稱為:

vector<vector<foobar> > vector2D(3);
foo(vector2D);

暫無
暫無

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

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