如何正确使用动态数组?

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)

Som*_*ude 6

如果大小是要从中创建“数组”的编译时常量,那么我建议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是一种无符号类型,因此它不允许出现负数,这是导致问题的一个较少原因。