是否可以在循环内声明一个数组。由于某些原因,我不能在循环之前声明它,因为它的长度发生了变化。我想知道我是否可以在循环中重新声明/删除一个数组。我使用的是C ++ / CLI语言。
答案 0 :(得分: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
然而,这迫使您不断了解分配和取消分配。这就是标准和Microsoft为您提供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
答案 1 :(得分:0)
你可以在每次迭代中使用Array::Resize方法(如eladidan所说);或者您可以使用List<>类,在每次迭代中添加项目,最后调用List&lt;&gt; :: ToArray()以获取您要查找的数组。可能第一种方式会更有效,但第二种方式更方便。