所以我有一个类(HostObject),它内部有一个复杂类(object1)的向量。如伪代码描述如下C++在没有默认初始化的情况下在类变量中分配向量大小
#DEFINE ARRAY_SIZE 10
class HostObject {
//other member variables
vector<Object1> vec(ARRAY_SIZE);
//default constructor
HostObject(){
//leave vector default constructed
}
//my custom constructor
HostObject(double parmeter1, double parameter2, doubleparameter3) {
//some code doing some calculations
for (int i = 0; i <ARRAY_SIZE; i++){
vec.push_back(Object1(double p1, int p2, double p3, intp4));
}
}
}
我知道这个代码被写入默认构造Object1s创建矢量任何时候HostObject将被初始化的方式。我的代码需要一个向量,所以我希望编译器知道向量的大小,以便它可以适当地分配我的向量所需的内存。我知道如果我想要更动态的分配,我可以使用储备。
我想我的问题是: 定义它时,它们是为矢量预留空间的一种方式,不需要默认初始化其中的对象或使用预留功能?
编辑:
我的目标是让内存空间分配的,所以当我构建HostObject的对象的数组键入获得分配的内存正确的金额。对象的内存大小是否根据默认构造函数的结果确定?
没有'std :: vector'目前没有容量的构造函数。 – chris
如果ARRAY_SIZE是一个常量,为什么不使用std :: array? – kfsone