在循环中声明数组
答
原生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
答
您可以在每次迭代中使用Array::Resize方法(如eladidan所述);或者您可以使用List<>类,在每次迭代中添加项目,并最终调用List <> :: ToArray()以获取要查找的数组。可能第一种方法会更有效率,但第二种方法更方便。
您能否向我们展示代码。所以我们可以更好地理解问题 – asifsid88 2013-02-16 19:25:44
我不确定我是否理解你想知道的。你可以在循环中声明(定义)一个数组,但是你将无法在循环之外的任何地方使用它。你也可以在循环外部声明数组并创建它(例如,通过调用new ...),在这种情况下,只要声明所在的范围就可以使用它。 – 2013-02-16 19:30:16
到目前为止,我的代码大约有1000行。让我以另一种形式提问我的问题。我可以更改声明数组的行号吗?我将在for循环之前声明一个数组,并在每个循环中更改行数。 – 2013-02-16 19:37:33