我正在用 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_ptr
或 std::shared_ptr
,无论您需要什么。
关于c++ - 如何在 C++ 中解构二维 vector ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37055092/