1 c++ arguments copy reference vector
让我们说我们上课了
class MyClass {
vector<vector<int > > myMatrice;
public :
MyClass(vector<vector<int > > &);
}
MyClass::MyClass(vector<vector<int > > & m) {
myMatrice = m;
}
Run Code Online (Sandbox Code Playgroud)
在MyClass的实例化过程中,我传递了一个大向量<vector <int >>,我发现该对象实际上是复制的而不仅仅是引用,所以需要内存的两倍...
拜托,任何人都可以帮我解决这个问题,因为太多时间我被困住了......
非常感谢!
如果您只想要一个引用,那么使用引用:
class MyClass {
vector<vector<int> >& myMatrice;
public:
MyClass(vector<vector<int> >& m) : myMatrice(m) {}
};
Run Code Online (Sandbox Code Playgroud)
但是请注意,您现在必须注意在生命周期中MyClass- 如果传递给in的引用在MyClass实例之前被销毁,则会留下悬空引用.
如果您确实需要共享所有权,则应考虑对堆分配的对象使用共享指针(如boost::shared_ptr或std::tr1::shared_ptr).
| 归档时间: |
|
| 查看次数: |
5506 次 |
| 最近记录: |