将二维向量传递给函数

9

I have a function which accepts a

vector<vector<MyClass>> 

并修改了MyClass实例。我已经很久没有写C ++了,我很难记得在这里通过引用而不是按值传递整个arg的足够条件。

我的原始方法签名是:

void modifyVectorOfVectors(vector<vector<MyClass> > vec) { ... }

我希望让这个程序更加内存高效,因此我最初将它改成了:

void modifyVectorOfVectors(vector<vector<MyClass*> > vec) { ... }

然后我意识到这意味着我的vec值仍将复制所有内部向量。因此,我将函数签名更改为:

void modifyVectorOfVectors(vector<vector<MyClass*> >* vec) { ... }

这样就足够了,还需要像这样做些什么吗:
void modifyVectorOfVectors(vector<vector<MyClass*>* >* vec) { ... }

有人能够强调一下这些之间的内存差异吗?非常感谢!

1
为什么不直接引用向量的向量呢?这样就没有内存泄漏了。 - Creris
使用typedef可能会使其更清晰明了。 - stefaanv
如果使用现代C++,那么using会更好 :) - FToDance
2个回答

17

简单地

void modifyVectorOfVectors( vector< vector< MyClass > >& vec) { ... }

3
  1. void modifyVectorOfVectors(vector<vector<MyClass> > vec) { ... } 复制外部向量,该向量包含所有内部向量的元素
  2. void modifyVectorOfVectors(vector<vector<MyClass*> > vec) { ... } 复制外部向量,该向量包含所有内部向量,内部向量包含指向MyClass的所有指针
  3. void modifyVectorOfVectors(vector<vector<MyClass*>* > vec) { ... } 复制外部向量,该向量包含内部向量的所有指针和内部向量持有MyClass的指针
  4. void modifyVectorOfVectors(vector<vector<MyClass*> *> vec*) { ... } 复制外部向量的指针,该向量包含所有内部向量的指针和内部向量持有MyClass的指针

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接