如何将`new`用于数组的指针
how to use `new` for pointer to array
#define N 10
int (*p)[N] = new int[N];
// or
typedef int TenInts[N];
TenInts *p = new TenInts;
这是C 语言简单的东西吗?有解决方法吗?(除了std::vector
,我需要的只是一个动态分配的数组,具有已知的编译时大小)
我需要new
,因为我将静态数组放入使用new
的模板中,并且模板接受了通用类型T
。考虑一下,template<typename T> void f() {T *t = new T;}
,我希望T
成为静态数组。
您想要
int *p = new int[N];
您无法在编译时间指定您打算动态分配的数组的大小。你为什么要这样做
我所需要的只是一个动态分配的阵列,具有已知的编译时大小
在这种情况下,您不需要使用new
。
只使用
#define N 10
std::array<int,N> p;
您不能使用
int (*p)[N] = new int[N];
但是,您可以使用:
int (*p)[N] = new int[1][N];
您可以写:
int (*p)[N] = new int[1][N];
或者如果需要几行替换1
。
也许这就是您想要的。
#include <array>
constexpr size_t N = 10;
auto * ptr = new std::array<int, N>();
这使您可以使用new
在运行时创建一个具有编译时常数大小的数组。
编辑:我假设当您说"我的模板使用new
"时,您的意思是new
而不是new[]
。这意味着您的模板最终调用delete
,而不是delete[]
。
相关文章:
- 添加到数组指针
- C++语法差异:二维和一维数组(指针算术)
- 数组指针表示法C++(移动数组时)
- 复制后删除原始数组指针将前 3 个字节设置为 0
- C++访问指向结构的指针中的类数组指针
- C++编译时使用 constexpr 字符数组指针分配静态数组?
- std::flush可以用于将对象指针转换为其封闭数组指针吗
- 创建<int>对整数数组指针的矢量引用 (C++)
- 将 2D 数组指针传递给 C++ 中的函数
- 创建指针是否超过非数组指针的末尾,而不是从 C++17 中的一元运算符和未定义的行为派生?
- 队列数组指针 (C++)
- C++数组指针上的删除操作
- 对于循环不循环和检测字符数组 [指针和字符数组]
- 如何初始化数组指针对象
- 如何正确传递 2D 数组指针作为参数
- 从数组指针中获取怪异的数字
- 初始化std :: unique_ptr作为原始数组指针的初始化
- 将结构数组指针从C#传递到C
- STD :: Sort将数组指针设置为NULL
- C++数组指针错误无法将“int*”转换为“int**”