3 回答

TA貢獻1876條經驗 獲得超6個贊
int main()
{
int size;
std::cin >> size;
int *array = new int[size];
delete [] array;
return 0;
}
不要忘記為delete您分配的每個數組new。

TA貢獻1799條經驗 獲得超9個贊
從C ++ 11開始,有一種安全的替代方法,new[]與delete[]零開銷不同,它是std::vector:
std::unique_ptr<int[]> array(new int[size]);
在C ++ 14中:
auto array = std::make_unique<int[]>(size);
以上兩個都依賴于相同的頭文件, #include <memory>

TA貢獻1876條經驗 獲得超7個贊
一旦對動態數組提出疑問,您可能不僅希望創建具有可變大小的數組,而且還希望在運行時更改它的大小。這是帶有的示例memcpy,您也可以使用memcpy_s或std::copy。取決于編譯器,<memory.h>或者<string.h>可能是必需的。使用此功能時,您將分配新的存儲區域,將原始存儲區域的值復制到該區域,然后釋放它們。
// create desired array dynamically
size_t length;
length = 100; //for example
int *array = new int[length];
// now let's change is's size - e.g. add 50 new elements
size_t added = 50;
int *added_array = new int[added];
/*
somehow set values to given arrays
*/
// add elements to array
int* temp = new int[length + added];
memcpy(temp, array, length * sizeof(int));
memcpy(temp + length, added_array, added * sizeof(int));
delete[] array;
array = temp;
您可以使用常數4代替sizeof(int)。
- 3 回答
- 0 關注
- 1433 瀏覽
添加回答
舉報