IDE - Visual Studio 2008, Visual C++
- I have a custom class Class1 with a copy constructor to it.
- I also have a vector
- Data is inserted using the following code
Class1* objClass1; vector<Class1> vClass1; for(int i=0;i<1000;i++) { objClass1 = new Class1(); vClass1.push_back(*objClass1); delete objClass1;
}
Now on every insert, the vector gets re-allocated and all the existing contents are copied to new locations. For example, if the vector has 5 elements and if I insert the 6th one, the previous 5 elements along with the new one gets copied to a new location (I figured it out by adding log statements in the copy constructors.)
On using reserve(), this however does not happen as expected! I have the following questions
- Is it mandatory to always use the reserve statement?
- Does vector does a reallocation every time I do a push_back; or does it happen because I am debugging?