C++向量引用参数

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 >>,我发现该对象实际上是复制的而不仅仅是引用,所以需要内存的两倍...

拜托,任何人都可以帮我解决这个问题,因为太多时间我被困住了......

非常感谢!

Geo*_*che 8

如果您只想要一个引用,那么使用引用:

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_ptrstd::tr1::shared_ptr).