3 回答

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

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

TA貢獻(xiàn)1876條經(jīng)驗(yàn) 獲得超7個(gè)贊
一旦對(duì)動(dòng)態(tài)數(shù)組提出疑問,您可能不僅希望創(chuàng)建具有可變大小的數(shù)組,而且還希望在運(yùn)行時(shí)更改它的大小。這是帶有的示例memcpy,您也可以使用memcpy_s或std::copy。取決于編譯器,<memory.h>或者<string.h>可能是必需的。使用此功能時(shí),您將分配新的存儲(chǔ)區(qū)域,將原始存儲(chǔ)區(qū)域的值復(fù)制到該區(qū)域,然后釋放它們。
// 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;
您可以使用常數(shù)4代替sizeof(int)。
- 3 回答
- 0 關(guān)注
- 1423 瀏覽
添加回答
舉報(bào)