C++ vector中指针元素内存处理

#include<iostream>
#include<vector>

using namespace std;

struct A
{
    A(int id=10):m_id(id){}
    void show(){
        cout<< "m_id is " << m_id <<endl;
    }
    int m_id;
};

int main(void)
{

    vector<A*> pVec;
    const int value = 10;
    for(int i=0; i < value; i++)
       pVec.push_back(new A(i));

    vector<A*>::iterator Iter=pVec.begin();
    for(;pVec.end() != Iter; Iter++)   
    {
        (*Iter)->show();
        delete *Iter;//删除空间  
        //pVec.erase(Iter);
        //(*Iter)->show();//erase删除一个迭代器 则迭代器调到下一个元素位置
        *Iter = NULL;
    }
    pVec.clear();
    cout<<" size(): "<< pVec.size() << "\tand capacity(): " << pVec.capacity() << endl;
    vector<A*>().swap(pVec);//正确的清除vector内存
    cout<<" size(): "<< pVec.size() << "\tand capacity(): " << pVec.capacity() << endl;
    return 0;
}
posted @ 2017-12-01 16:09  cloudren2020  阅读(460)  评论(0编辑  收藏  举报