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容器 值语义

往容器中插入指针,容器拷贝的仅仅只是指针,容器并不负责指针指向的内存空间的释放。

往容器中插入的是类对象,容器拷贝整个对象,(容器中拷贝的对象与原对象脱离关系)。

 

posted @ 2017-07-03 10:25  ren_zhg1992  阅读(126)  评论(0)    收藏  举报