在循环中声明一个数组

时间:2013-02-16 19:23:42

标签: arrays loops c++-cli declaration

是否可以在循环内声明一个数组。由于某些原因,我不能在循环之前声明它,因为它的长度发生了变化。我想知道我是否可以在循环中重新声明/删除一个数组。我使用的是C ++ / CLI语言。

2 个答案:

答案 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::vectorcli::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()以获取您要查找的数组。可能第一种方式会更有效,但第二种方式更方便。