vector的push_back
vector怎么分配内存的

每次插入新的元素需要重新分配空间,然后把之前的复制到新的空间。新增的空间为原来的 50%
看一段代码:
#include <vector> #include <iostream> using namespace std; //#include "DebugNew.h" class Test { public: Test() { cout << "Test..." << endl; } Test(const Test& other) //这里一定要加 const { cout << "Copy Test.." << endl; } ~Test() { cout << "~Test..." << endl; } }; int main() { vector<Test> v; Test t1; Test t2; Test t3; v.push_back(t1); //copy t1 v.push_back(t2); // copy t1 ~t1 copy t2 v.push_back(t3); //copy t1 copy t2 ~t1 ~t2 copy t3 return 0; }
看输出:

注意:
vector容器 值语义
往容器中插入指针,容器拷贝的仅仅只是指针,容器并不负责指针指向的内存空间的释放。
往容器中插入的是类对象,容器拷贝整个对象,(容器中拷贝的对象与原对象脱离关系)。

浙公网安备 33010602011771号