c++自定义动态数组,处理元素删除释放问题

最近在学数据结构,想实现个动态数组,为了适应不同的数据类型,使用了类模板,但在实例化模板的时候,如果是普通的数据类型(int, double)还好处理,但如果存储的是new出来的对象,存放在堆区,在删除的时候如何处理呢?~~~~

首先想到的是判断是否是对象,但C++好像并没有这种功能

template<typename T>
class DynamicArray
{
public:
    DynamicArray();
    DynamicArray(int capacity);
    ~DynamicArray();

    string    toString();
    bool    isEmpty();
    bool    isOverflow(int index);
    void    push(T element);
    void    clear();
    int        size();
    int        indexOf(T element);
    int        insert(int index, T element);
    T        remove(int index);
    T        set(int index, T element);
    T        get(int index);

private:
    void    rangeCheck(int index);
    void    ensureCapacity();

private:
    int m_length;
    int m_capacity;
    T *m_elements;

    static int DEFAULT_CAPACITY;
    static int ELEMENT_NOT_FOUNT;
};
阅读 2.1k
1 个回答

照理说数组应该只管存就好了,不用管释放的事。谁申请就谁负责释放,或者谁最后不用了谁负责释放。一定要数组自己负责的话,就改成存指针(T*),删除元素时就能delete了。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题