c++ - 将 vector 的 vector 传递给函数

标签 c++ vector pass-by-reference pass-by-value pass-by-pointer

我有一个接受a的函数

vector<vector<MyClass>> 

并修改 MyClass 实例。自从我编写任何 C++ 以来已经有很长一段时间了,我很难记住这里什么足以通过引用而不是通过值传递整个 arg。

我原来的方法签名是:

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

我想提高内存效率,所以我最初将其更改为:

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

然后我意识到这意味着我的 vec 值仍然会复制所有内部 vector 。所以我将函数签名更改为:

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

这就足够了吗,还是我还需要做类似的事情:

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

有人可以强调所有这些之间的内存差异吗?非常感谢!

最佳答案

简单

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

关于c++ - 将 vector 的 vector 传递给函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30445200/

相关文章:

C++ Switch 语句 - 给玩家另一个选择的机会

c++ - "no matching function call..."这个错误是从哪里来的,我该如何解决?

compiler-construction - LLVM,通过引用调用

Foreach 循环中的 PHP 引用对象

c# - 将 Arduino 校验和函数转换为 C#

c++ - 将 Perl 移植到 C++ `print "\x{2501 }"x 12;`

c++ - 如何在 C++ 中定义 vector ?

c# - C#中如何通过引用传递值?

c++ - QComboBox::showPopup()从其QLineEdit窃取焦点

iphone - iOS - 使用 Accelerate.framework 对向量进行按位异或