c++ - 如何在 C++ 中解构二维 vector

标签 c++

我正在用 C++ 编程,想知道是否应该手动释放一个二维 vector 。例如:

class A{
    private: vector<vector<int> > a;
    public: A(vector<int> &input0,vector<int> &input1){
    a.push_back(input0);
    a.push_back(input1);
   }
    ~A(){//should i do something here?}
}

int main(){
    vector<int> a0(3);
    vector<int> a1(3);
    A my_A(a0,a1);
}

在这个例子中,我应该在类A的解构器中解构私有(private)变量a吗?如果是,我应该怎么做?

最佳答案

不,你不需要。

std::vector 与所有标准库工具一样,本身具有析构函数,负责适当的析构。如果您必须手动销毁它,用户很容易忘记销毁并最终在内存中有一个空闲的 std::vector

但是,如果您应该将堆分配的对象存储在 std::vector 中:您必须删除std::vector 的析构函数无法知道指向堆内存的指针,因此它不会释放该内存。在这种情况下,只需使用 std::unique_ptrstd::shared_ptr,无论您需要什么。

关于c++ - 如何在 C++ 中解构二维 vector ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37055092/

相关文章:

c++ - 晚期默认模板参数声明的 clang++ 错误

C++ DirectXTK 随时间改变 SpriteTint

c++ - 什么是 undefined reference /未解析的外部符号错误,我该如何解决?

c++ - CPLEX C++ : How to change parameters during optimization

c++ - 为什么 "long *"和 "int *"在 32 位代码中不兼容?

c++ - 可由设备或主机调用的 CUDA 函数

c++ - 有两个线程的运行时间与一个线程的运行时间没有改善

c++ - 在 C++ 中创建另一个类中的类的对象

c++ - 有没有一种简单的方法可以将变量压入堆栈以供以后检索

java - 递归(返回语句)