唯一/共享 ptr 用于在数组超出范围后自动删除阵列
Unique/Shared ptr to automatically delete array after it goes out of scope
我正在努力提高我的C++技能。假设我有以下一段代码
#include <iostream>
using namespace std;
int main()
{
int *p;
p=new int[10];
delete [] p;
return 0;
}
如何使用唯一/共享 ptr 自动删除数组,而不是在这段代码超出范围时手动删除数组?顺便说一句,我已经在 SO 中读到我可能需要下载提升库才能使用唯一/共享的 ptr。谁能证实这一点?还是包含在标准数据库中?
C++11 中有std::unique_ptr<T[]>
,它允许您执行以下操作:
std::unique_ptr<int[]> p(new int[10]);
如果需要编译时常量数组,可以改用std::array
:
std::array<int, 10> p;
否则,只需选择好的旧std::vector
:
std::vector<int> p(10);
自 C++11 起,std::unique_ptr
包含在标准库中。 你可以做:
#include <memory>
int main()
{
std::unique_ptr<int[]> p( new int[10] );
}
顺便说一句,using namespace std;
是一个坏习惯。
您也可以考虑使用 std::vector<int>
而不是 std::unique_ptr<int[]>
。
相关文章:
- 为什么在全局范围内使用"extern int a"似乎不行?
- 尝试通过多个向量访问变量时,向量下标超出范围
- OpenMP阵列性能较差
- 错误:未在此范围内声明'reverse'
- 正在将指针转换为范围
- 使用std::transform将一个范围的元素添加到另一个范围中
- 在基于范围的for循环中使用结构化绑定声明
- 如何将三维尺寸不固定的三维阵列展平为一维阵列
- 当我的阵列太大时出现分段错误
- 为什么基于循环范围不直接在C 中使用参数阵列
- 唯一/共享 ptr 用于在数组超出范围后自动删除阵列
- 访问字符阵列中不可用的内存位置(超出范围值)
- 找不到最大乘积子阵列的范围
- C :自动变量扣除额的范围与循环的范围与多维阵列的循环的正常范围
- 在一个范围内的阵列中找到三胞胎
- 阵列索引(转换为整数)用范围枚举
- boost::多阵列内存管理和范围
- 为什么我的阵列超出范围
- 以将阵列中的数字范围映射为均匀随机1到100
- 阵列超出范围检测