lot*_*ons 5 c++ vector pass-by-reference pass-by-value pass-by-pointer
我有一个接受a的功能
vector<vector<MyClass>>
Run Code Online (Sandbox Code Playgroud)
并修改MyClass实例.自从我编写任何C++以来已经很长时间了,我很难记住通过引用而不是通过值传递整个arg的内容.
我原来的方法签名是:
void modifyVectorOfVectors(vector<vector<MyClass> > vec) { ... }
Run Code Online (Sandbox Code Playgroud)
我想让这个内存有效,所以我最初改为:
void modifyVectorOfVectors(vector<vector<MyClass*> > vec) { ... }
Run Code Online (Sandbox Code Playgroud)
然后我意识到这意味着我的vec值仍然会复制所有内部向量.所以我将我的功能签名更改为:
void modifyVectorOfVectors(vector<vector<MyClass*> >* vec) { ... }
Run Code Online (Sandbox Code Playgroud)
这是否足够,或者我还需要做以下事情:
void modifyVectorOfVectors(vector<vector<MyClass*>* >* vec) { ... }
Run Code Online (Sandbox Code Playgroud)
有人可以强调所有这些之间的记忆差异吗?非常感谢!
KAB*_*ult 12
只是
void modifyVectorOfVectors( vector< vector< MyClass > >& vec) { ... }
Run Code Online (Sandbox Code Playgroud)
void modifyVectorOfVectors(vector<vector<MyClass> > vec) { ... }
复制具有内部向量所有元素的外部向量void modifyVectorOfVectors(vector<vector<MyClass*> > vec) { ... }
复制具有所有内部向量的外部向量,其中包含 MyClass 的所有指针void modifyVectorOfVectors(vector<vector<MyClass*>* > vec) { ... }
复制具有内部向量的所有指针的外部向量,并且内部向量保存 MyClass 的指针void modifyVectorOfVectors(vector<vector<MyClass*> *> vec*) { ... }
复制外部向量的指针,该外部向量具有内部向量的所有指针,并且内部向量保存 MyClass 的指针| 归档时间: |
|
| 查看次数: |
4223 次 |
| 最近记录: |