删除堆分配的二维向量
Deleting a heap allocated 2-dimensional vector
所以我有一个向量的向量是堆分配的:
std::vector<std::vector<int>>* matrix = new std::vector<std::vector<int>>();
在向CCD_ 1。删除此对象的正确方法是什么?
delete matrix
是否解除分配所有内部矢量?
是的,delete matrix;
可以。
您可能需要考虑是否需要动态分配向量。矢量总是将其数据存储在空闲存储(堆)上,因此不需要为此而动态分配。他们的脚印很小。
如果必须动态分配向量,那么您应该认真考虑使用智能指针,例如std::unique_ptr或std::shared_ptr,那么您根本不需要调用delete
:
auto matrix = std::make_unique<std::vector<std::vector<int>>>();
是的。delete matrix
在返回内存之前调用std::vector<std::vector<int>>
的析构函数。析构函数调用将调用其所有元素的析构函数std::vector<int>
。
此外,std::vector
的大多数用法都不需要在堆上创建它。我怀疑你的案子也是如此。
相关文章:
- 我在二维向量中是否正确分配了内存
- 在二维向量或数组中可以存储的最大元素数是多少?
- 如何将整数字符串转换为整数的二维向量?
- 如何使用擦除和迭代器来删除二维向量中的项目
- 如何在二维向量c++中迭代col
- 如何在C++中将.csv文件的元素存储到二维向量中?
- std::vector::clear()ing 二维向量线程的内部向量安全吗?
- 在我为我的二维向量提供第一个值后控制台关闭
- 以C++输出二维向量
- 在 c++ 中赋值给二维向量
- 在二维向量的每一列中查找最大值
- 类对象初始化的二维向量
- 有没有办法像python:np.concatenate([x,y,z],axis=1)中那样沿着列连接三个二维向量C++
- 我如何在二维向量中存储一些数组
- 我可以push_back矩形形状到继承矩形形状的类的二维向量中吗?
- 二维向量的迭代器
- 在 STL 中,如何交换二维向量
- 创建一个二维向量阵列,遍历
- 创建二维向量的错误
- C++从文件中读取信息并从该信息构建二维向量