是否可以在循環內聲明數組?由於某些原因,我不能在循環之前聲明它,因爲它的長度發生了變化。我想知道如果我可以重新聲明/刪除循環內的數組。我正在使用C++/CLI語言。在循環中聲明數組
Q
在循環中聲明數組
0
A
回答
0
原生C++數組必須在編譯時確定它們的大小(如果它們在堆棧中分配),所以如果要使用本地數組,則必須使用new
運算符分配它們。
不推薦的解決方案:
int rows = 1000;
int arr[] = new int[rows]; //new array with 1000 integers
int rows = 5;
delete arr; //don't forget to delete the previous allocation before re-sizing
int arr[] = new int[rows]; //new array with 5 integers
然而,這迫使你不斷地意識到分配和去分配。這就是爲什麼標準和微軟給你std::vector
和cli::array
。
託管方式:
如果你希望你的數組是託管堆上,用cli::array:
cli::array<int> ^arr= gcnew cli::array<int>(1000); //new array with 1000 integers
Array::Resize(arr, 5); //resize arr to 5 integers
非託管方式:
如果你希望你的陣列要放在非託管堆(本機C++)上,請使用std::vector
:
std::vector<int> arr(1000); //new array with 1000 integers
arr.resize(5); //resize array to 5 integers
0
您可以在每次迭代中使用Array::Resize方法(如eladidan所述);或者您可以使用List<>類,在每次迭代中添加項目,並最終調用List <> :: ToArray()以獲取要查找的數組。可能第一種方法會更有效率,但第二種方法更方便。
相關問題
- 1. 聲明數組在一個循環中
- 2. 在聲明中對循環
- 3. 在Java中的for循環中聲明數組有多糟糕?
- 4. 聲明,並在循環
- 5. 聲明在for循環中使用的關聯數組
- 6. C#,NUnit聲明在循環中
- 7. 在循環中聲明一個指針
- 8. 在foreach循環聲明中使用LINQ
- 9. VB:在For循環中聲明變量
- 10. 在循環中聲明的變量
- 11. 如果聲明在Foreach循環中
- 12. 如何用循環聲明數組中的隨機值?
- 13. 重試數組循環內聲明在PHP,但與陣列
- 14. 在循環之前或之內聲明數組
- 15. C#ForEach循環(字符串聲明在循環中)
- 16. 聲明變量外循環並在循環中使用它
- 17. ES6在循環之前或循環中聲明變量
- 18. Java - Alternate While循環聲明
- 19. 循環XSD 1.1聲明
- 20. 用循環聲明變量
- 21. C++循環和聲明函數
- 22. 在ZSH中聲明數組
- 23. 在java中聲明數組
- 24. 在循環中聲明的數組無法在其外部識別
- 25. 聲明中的循環問題
- 26. OpenMP - for循環中的變量聲明
- 27. 創建循環中E4X聲明
- 28. 循環中的局部變量聲明
- 29. 如何聲明R中的for循環
- 30. while循環中聲明變量javascript
您能否向我們展示代碼。所以我們可以更好地理解問題 – asifsid88 2013-02-16 19:25:44
我不確定我是否理解你想知道的。你可以在循環中聲明(定義)一個數組,但是你將無法在循環之外的任何地方使用它。你也可以在循環外部聲明數組並創建它(例如,通過調用new ...),在這種情況下,只要聲明所在的範圍就可以使用它。 – 2013-02-16 19:30:16
到目前爲止,我的代碼大約有1000行。讓我以另一種形式提問我的問題。我可以更改聲明數組的行號嗎?我將在for循環之前聲明一個數組,並在每個循環中更改行數。 – 2013-02-16 19:37:33