假设我有以下代码:
#include <iostream>
#include <vector>
using namespace std;
class X {
public:
int x[1000];
X(int y) { for (int i = 0; i < 1000; i++) x[i] = y; }
};
int main() {
vector<X> v;
X x0(0);
X x1(1);
X x2(2);
v.push_back(x0);
v.push_back(x1);
v.push_back(x2);
cout << v[2].x[33] << endl;
return 0;
}
如果我理解正确,在我的代码中,我在堆栈上为和分配内存x0
,然后将这些内容复制到由 为我分配的内存中。此外,据我了解,移动语义在这里无济于事,因为它不完全像持有指向其他地方的资源的指针。x1
x2
vector
X
我可以直接在分配给我的原始内存块上调用构造函数vector
吗?如果不是,那么处理此类情况的正确方法是什么?