new*_*bie 1 c++ dynamic-arrays
所以我试图为我的程序使用动态数组,我不知道我是否做得对。我应该使用 const int 还是仅使用 int ?
int size = 1;
int *num1 = new int [size];
int *num2 = new int [size];
Run Code Online (Sandbox Code Playgroud)
或者
const int size = 1;
int *num1 = new int [size];
int *num2 = new int [size];
Run Code Online (Sandbox Code Playgroud)
如果大小是要从中创建“数组”的编译时常量,那么我建议std::array,如
std::array<int, 1> num1;
Run Code Online (Sandbox Code Playgroud)
如果在编译时不知道大小,则使用std::vector,如
std::vector<int> num1(size);
Run Code Online (Sandbox Code Playgroud)
如果你真的有使用显式动态分配,然后齐齐智能指针一样std::unique_ptr,像
auto num1 = std::make_unique<int[]>(size);
Run Code Online (Sandbox Code Playgroud)
至于变量size是否应该是const, constexpr, 完全没有限定,或者您是否应该在分配时直接使用文字值,那么这实际上取决于用例、值可用性和个人偏好。
另一方面,对于尺寸,您应该使用size_t类型而不是int. 大多数程序员会立即明白,当你使用size_t变量时,是用来存储一个大小的。否则,如果您使用int它,它可能是任意整数值。此外,size_t是一种无符号类型,因此它不允许出现负数,这是导致问题的一个较少原因。