好的,所以我有一个大 vector 说
vector<vector<vector<int>>>
10000 x 10000 x 10000。
我有一个类,它有一个 vector 作为私有(private)成员变量:
class foo {
private:
vector<vector<vector<int>>> myvector
};
我的类有一个构造函数,它使用引用传递和初始化列表:
foo(vector<vector<vector<int>>> &myvector_in) : myvector(myvector_in);
我想知道在内存使用方面到底发生了什么。 private myvector 和原来声明的一样吗,还是复制的。
基本上,我想知道内存中是否有两个版本的 myvector。
谢谢!
最佳答案
这是一个钓鱼技巧。
自己很容易回答。将 myvector_in 的 [0][0][0] 设置为已知值。调用构造函数并在其中还将 [0][0][0] 设置为 myvector 的不同值。构造函数返回后,打印 myvector_in 的内容。如果它与您最初设置的相同,您必须得出结论,这两个 vector 是不同的实体,因此一个被复制到另一个。如果它们相同,您可以断定它们实际上是相同的实例。
您还可以打印地址以更好地了解什么是什么。
我必须指出,你原来的问题中提到的内存要求是在 super 计算机领域,你有吗?
关于c++ - 在 C++ 类中使用按引用传递和成员初始化列表时会发生什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46394962/