So I have a class (HostObject) that has a vector of complex classes (object1) inside it. Such as the pseudocode depicted below
#DEFINE ARRAY_SIZE 10
class HostOb
You could do this by calling reserve()
in default constructor.
#DEFINE ARRAY_SIZE 10
class HostObject {
//other member variables
vector<Object1> vec; //vec(ARRAY_SIZE); // not here
//default constructor
HostObject() {
//leave vector default constructed
vec.reserve(ARRAY_SIZE); // but here
}
//my custom constructor // no need to change, since push_back will increase size automatically
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));
}
}
}
Also consider using static unsigned array_size = 10;
as a member of class HostObject
, so that you can change the size dynamically every time creating an object of HostObject
.
HostObject ho1; // array size is 10
HostObject::array_size = 20;
HostObject ho2; // array size is 20
There is no constructor for std::vector
for for reserving capacity. The only way you can reserve capacity is to use reserve
member function.
#DEFINE ARRAY_SIZE 10
class HostObject {
//other member variables
vector<Object1> vec;
//default constructor
HostObject(){
vec.reserve(ARRAY_SIZE);
}
//my custom constructor
HostObject(double parmeter1, double parameter2, doubleparameter3) {
vec.reserve(ARRAY_SIZE);
//some code doing some calculations
for (int i = 0; i <ARRAY_SIZE; i++){
vec.push_back(Object1( double p1, int p2, double p3, intp4));
}
}
}
Read more about std::vector