让我说我有一个
vector<vector<foobar> > vector2D(3);
for(int i=0;i<3;i++)
vector2D[i].resize(3);
所以,一个3x3的载体,总共含有9种foobar元素。
我知道想要将“vector2D”传递给函数来修改“vector2D”中的某些值。 例如,如果foobar包含
struct foobar{
int *someArray;
bool someBool;
}
我想将“vector2D”传递给修改vector2D的函数,如下所示:
vector2D[0][0].someArray = new int[100];
vector2D[0][0].someArray[49] = 1;
该函数不应返回任何内容(通过引用调用)。
这甚至可能吗?
答案 0 :(得分:7)
是的,这是可能的。您只需要将其作为非const引用传递。类似的东西:
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
结构实现复制构造函数。
答案 1 :(得分:0)
当然,只需通过引用传递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);