template <typename T>
class dvec {
    size_t n = 0;
    size_t capacity = 0;
    T* data = nullptr;
public:
    dvec() {
        recapacity(21);
    }
    virtual ~dvec() {
        if (data != nullptr) {
            delete[] data;
            data = nullptr;
        }
    }
    T& operator [] (size_t k) {
        if (k < n)
            return data[k];
        throw "Index out of range";
    }
    void recapacity(size_t k = capacity) {
        capacity = k;
        const size_t bytes = sizeof(T) * capacity;
        T* newData = static_cast<T*>(::operator new(bytes));
        memcpy(newData, data, sizeof(T) * n);
        if (data != nullptr)
            delete[] data;
        data = newData;
    }
    void resize(size_t k, T init = T()) {
        if (k > capacity)
            recapacity(2 * k);
        for (size_t i = n; i < k; i++)
            data[i] = init;
        n = k;
    }
    void push_back(const T& a) {
        resize(n + 1);
        data[n - 1] = a;
    }
};
I want to make some custom vector but current my vector doesn't work in vector scoped vector. This throw error when delete (going out scorp) I guess first inside vector delete so outside vector can't delete spaces that have been deleted.
 
    