adpmvector

//////////////////////////////////////////////////////////////////////////
template<class _Tp>
class adpmvector : protected vector<_Tp>
{
public:    
    typedef _Tp value_type;
    typedef vector<_Tp>::iterator iterator;    

    explicit adpmvector()    {}
    ~adpmvector()
    {
        clear();
    }    
    void clear()
    {
        vector<_Tp>::iterator itx = vector<_Tp>::begin();
        while(     vector<_Tp>::end()!=itx )
            delete *itx++;        
        vector<_Tp>::clear();
    }

    iterator begin()
    {
        return vector<_Tp>::begin();
    }
    iterator end()
    {
        return vector<_Tp>::end();
    }

    bool empty() const   
    {
        return vector<_Tp>::empty();
    }

    void push_back(const _Tp& __x)
    {
        vector<_Tp>::push_back(__x);
    }

    size_type size() const  
    {
        return vector<_Tp>::size();
    }

    iterator erase(iterator __position)
    {
        return vector<_Tp>::erase(__position);
    }
};

原文地址:https://www.cnblogs.com/BloodAndBone/p/2501837.html