IDE - Visual Studio 2008,Visual C++
- 我有一个带有复制构造函数的自定义类Class1 。
- 我也有矢量图
- 使用以下代码插入数据
Class1* objClass1; vector<Class1> vClass1; for(int i=0;i<1000;i++) { objClass1 = new Class1(); vClass1.push_back(*objClass1); delete objClass1;
}
现在在每次插入时,向量都会被重新分配,所有现有内容都被复制到新位置。例如,如果向量有 5 个元素,并且如果我插入第 6 个元素,则前 5 个元素和新元素一起被复制到一个新位置(我通过在复制构造函数中添加日志语句来解决这个问题。)
然而,在使用reserve()时,这并没有按预期发生!我有以下问题
- 是否必须始终使用储备声明?
- 每次我执行push_back时,vector 是否都会重新分配;还是因为我正在调试而发生?