IDE - Visual Studio 2008,Visual C ++
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()时,这不会按预期发生!我有以下问题
答案 0 :(得分:2)
答案 1 :(得分:1)
通过将您的复制构造函数测试放入非调试代码中来了解,并告诉我们您的平台获得了什么! IMO向量不应该在每次回击时重新分配。有更智能的方法来管理内存,我敢打赌实施者没有这样做的钱。