中文字幕一区二区人妻电影,亚洲av无码一区二区乱子伦as ,亚洲精品无码永久在线观看,亚洲成aⅴ人片久青草影院按摩,亚洲黑人巨大videos

C++動態(tài)數(shù)組的實例分配

發(fā)布于:2021-01-21 16:47:23

0

215

0

C++ 動態(tài)數(shù)組 分配

什么是動態(tài)數(shù)組?

動態(tài)數(shù)組與常規(guī)數(shù)組非常相似,但其大小在程序運行時是可以修改的。數(shù)組元素占用連續(xù)的內(nèi)存塊。

一旦創(chuàng)建了數(shù)組,就不能更改其大小。但是,動態(tài)數(shù)組是不同的。動態(tài)數(shù)組可以在填充之后擴展其大小。

在創(chuàng)建數(shù)組的過程中,它被分配了預定數(shù)量的內(nèi)存。動態(tài)數(shù)組的情況并非如此,因為當需要時,它會將其內(nèi)存大小增加一定的因子。

在這個C++教程中,你將學習什么是動態(tài)數(shù)組?影響動態(tài)數(shù)組性能的因素。

影響動態(tài)陣列性能的因素

數(shù)組的初始大小及其增長因子決定了它的性能。注意以下幾點:

  1. 如果一個數(shù)組的大小和增長因子都很小,它會更頻繁地重新分配內(nèi)存。這將降低陣列的性能。

  2. 如果一個數(shù)組的大小和增長因子都很大,那么它將有大量未使用的內(nèi)存。因此,調(diào)整大小操作可能需要更長的時間。這將降低陣列的性能。

新關鍵字

在C++中,我們可以使用新關鍵字創(chuàng)建動態(tài)數(shù)組。要分配的項目數(shù)在一對方括號內(nèi)指定。類型名稱應在其前面。將分配請求的項目數(shù)。

語法:

new關鍵字采用以下語法:

pointer_variable = new data_type;

指針變量是指針變量的名稱。

數(shù)據(jù)類型必須是一個有效的C++數(shù)據(jù)類型。

關鍵字然后返回指向第一項的指針。創(chuàng)建動態(tài)數(shù)組后,我們可以使用delete關鍵字將其刪除。

例1:

#includeusing namespace std;
int main() {
int x, n;
cout << "Enter the number of items:" << "n";
cin >>n;
int *arr = new int(n);
cout << "Enter " << n << " items" << endl;
for (x = 0; x < n; x++) {
 cin >> arr[x];
}
cout << "You entered: ";
for (x = 0; x < n; x++) {
 cout << arr[x] << " ";
}
return 0;
}

輸出:

 

以下是代碼截圖:

 

代碼說明:

  1. 將iostream頭文件包含到我們的程序中以使用其功能。

  2. 在我們的程序中包含std名稱空間,以便在不調(diào)用它的情況下使用它的類。

  3. 調(diào)用main()函數(shù)。程序邏輯應該添加到函數(shù)體中。

  4. 聲明兩個整數(shù)變量x和n。

  5. 在控制臺上打印一些文本,提示用戶輸入變量n的值。

  6. 從鍵盤讀取用戶輸入并將其分配給變量n。

  7. 聲明一個數(shù)組,以容納總共n個整數(shù),并將其分配給指針變量*arr。

  8. 打印一條消息,提示用戶輸入n個項目。

  9. 使用for循環(huán)創(chuàng)建循環(huán)變量x,以迭代用戶輸入的項。

  10. 讀取用戶輸入的元素并將它們存儲在for循環(huán)主體的數(shù)組arr中。

  11. 在控制臺上打印一些文本。

  12. 使用for循環(huán)創(chuàng)建循環(huán)變量x來迭代數(shù)組的項。

  13. 在控制臺上打印名為arr的數(shù)組中包含的值。

  14. for循環(huán)主體的結(jié)尾。

  15. 程序成功完成后必須返回值。

  16. main()函數(shù)主體的結(jié)尾。

注意:在上面的示例中,允許用戶在運行時為數(shù)組指定任何大小。這意味著數(shù)組的大小是在運行時確定的。

初始化動態(tài)分配的陣列

將動態(tài)數(shù)組初始化為0很容易。

語法:

int *array{ new int[length]{} };

在上述語法中,長度表示要添加到數(shù)組中的元素數(shù)。因為我們需要將數(shù)組初始化為0,所以應該將其留空。

我們可以使用初始值設定項列表初始化動態(tài)數(shù)組。讓我們創(chuàng)建一個示例來演示這一點。

例2:

#includeusing namespace std;

int main(void) {

int x;

int *array{ new int[5]{ 10, 7, 15, 3, 11 } };

cout << "Array elements: " << endl;

for (x = 0; x < 5; x++) {

 cout << array[x] << endl;
}

return 0;
}

輸出:

   

以下是代碼截圖:

 

代碼說明:

  1. 將iostream頭文件包含到我們的程序中以使用其功能。

  2. 在我們的程序中包含std名稱空間,以便在不調(diào)用它的情況下使用它的類。

  3. 調(diào)用main()函數(shù)。程序邏輯應該添加到函數(shù)體中。

  4. 聲明名為x的整數(shù)變量。

  5. 使用初始值設定項列表聲明名為array的動態(tài)數(shù)組。數(shù)組將包含5個整數(shù)元素。請注意,我們沒有在數(shù)組長度和初始值設定項列表之間使用“=”運算符。

  6. 在控制臺上打印一些文本。Endl是C++的關鍵字,意思是結(jié)束行。它將光標移到下一個句子。

  7. 使用for循環(huán)迭代數(shù)組元素。

  8. 在控制臺上打印名為array的數(shù)組的內(nèi)容。

  9. for循環(huán)主體的結(jié)尾。

  10. 程序成功完成后必須返回值。

  11. main()函數(shù)主體的結(jié)尾。

調(diào)整數(shù)組大小

動態(tài)數(shù)組的長度是在分配時間內(nèi)設置的。

但是,C++在分配后沒有一個內(nèi)置的調(diào)整數(shù)組大小的機制。

但是,您可以通過動態(tài)分配新數(shù)組、在元素上復制,然后刪除舊數(shù)組來克服此挑戰(zhàn)。

注意:這種技術很容易出錯,因此請盡量避免。

動態(tài)刪除數(shù)組

一個動態(tài)數(shù)組一旦達到目的就應該從計算機內(nèi)存中刪除。delete語句可以幫助您實現(xiàn)這一點。釋放的內(nèi)存空間可以用來保存另一組數(shù)據(jù)。但是,即使您不從計算機內(nèi)存中刪除動態(tài)數(shù)組,一旦程序終止,它也會自動刪除。

注意:要從計算機內(nèi)存中刪除動態(tài)數(shù)組,應使用delete[],而不是delete。[]指示CPU刪除多個變量而不是一個變量。在處理動態(tài)數(shù)組時使用delete而不是delete[]可能會導致問題。這類問題的例子包括內(nèi)存泄漏、數(shù)據(jù)損壞、崩潰等。

例3:

#includeusing namespace std;
int main() {
int x, n;
cout << "How many numbers will you type?" << "n";
cin >>n;
int *arr = new int(n);
cout << "Enter " << n << " numbers" << endl;
for (x = 0; x < n; x++) {
 cin >> arr[x];
}
cout << "You typed: ";
for (x = 0; x < n; x++) {
 cout << arr[x] << " ";
}
cout << endl;
delete [] arr;
return 0;
}

輸出:

 

以下是代碼截圖:

 

代碼說明:

在我們的程序中包含iostream頭文件以使用其功能。

  1. 在我們的程序中包含std名稱空間,以便在不調(diào)用它的情況下使用它的類。

  2. 調(diào)用main()函數(shù)。程序邏輯應該添加到函數(shù)體中。

  3. 聲明整數(shù)數(shù)據(jù)類型的兩個變量x和n。

  4. 在控制臺上打印一些文本。文本將要求用戶說明他們將輸入的數(shù)字數(shù)。

  5. 從鍵盤讀取用戶輸入。輸入值將分配給變量n。

  6. 聲明一個指針變量*arr。數(shù)組arr將保留一些內(nèi)存來存儲總共n個整數(shù)。

  7. 在控制臺上打印一條消息,提示用戶輸入n個數(shù)字。

  8. 創(chuàng)建for循環(huán)和循環(huán)變量x,以迭代用戶輸入的數(shù)字。

  9. 讀取用戶輸入的數(shù)字并將其存儲在for循環(huán)主體的數(shù)組arr中。

  10. 在控制臺上打印一些文本。

  11. 使用for循環(huán)和循環(huán)變量x迭代數(shù)組arr的內(nèi)容。

  12. 在控制臺上打印數(shù)組arr的值。

  13. for循環(huán)主體的結(jié)尾。

  14. 在控制臺上打印空行。

  15. 釋放數(shù)組arr的內(nèi)存。

  16. 程序成功完成后將返回值。

  17. main()函數(shù)主體的結(jié)尾。

總結(jié):

  1. 常規(guī)數(shù)組的大小是固定的。一旦聲明,就不能修改它們的大小。

  2. 對于這些類型的數(shù)組,內(nèi)存大小在編譯時確定。

  3. 動態(tài)數(shù)組是不同的。它們的大小可以在運行時更改。

  4. 在動態(tài)數(shù)組中,大小在運行時確定。 > LI> C++中的動態(tài)數(shù)組是用new關鍵字聲明的。

  5. 我們使用方括號指定要存儲在動態(tài)數(shù)組中的項數(shù)。

  6. 處理完數(shù)組后,我們可以使用delete操作符釋放內(nèi)存。

  7. 使用帶[]的delete運算符釋放所有數(shù)組元素的內(nèi)存。

  8. 不帶[]的刪除只釋放單個元素的內(nèi)存。 > LI>沒有內(nèi)置的機制來調(diào)整C++數(shù)組的大小。

  9. 要使用列表初始值設定項初始化數(shù)組,我們不使用“=”運算符。