将向量的向量传递给函数

Passing vector of vectors to function

本文关键字:向量 函数      更新时间:2023-10-16

我有一个接受

的函数
vector<vector<MyClass>> 

并修改MyClass实例。我已经很长时间没有写c++了,我很难记起在这里用引用而不是用值传递整个参数是足够的。

我原来的方法签名是:
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) { ... }

谁能强调一下这些记忆之间的差异?非常感谢!

简写

void modifyVectorOfVectors( vector< vector< MyClass > >& vec) { ... }
  1. void modifyVectorOfVectors(vector<vector<MyClass> > vec) { ... }复制包含内部向量
  2. 所有元素的外部向量
  3. void modifyVectorOfVectors(vector<vector<MyClass*> > vec) { ... }复制外部向量,其中包含所有内部向量,其中包含MyClass
  4. 的所有指针
  5. void modifyVectorOfVectors(vector<vector<MyClass*>* > vec) { ... }复制外部向量,包含所有内部向量的指针,内部向量包含MyClass
  6. 的指针
  7. void modifyVectorOfVectors(vector<vector<MyClass*> *> vec*) { ... }复制外部向量的指针,外部向量包含所有内部向量的指针,内部向量包含MyClass
  8. 的指针