定义数组,然后更改其大小

use*_*514 5 c++ arrays

我来自java背景,我可以用Java做一些我需要用C++做的事,但我不知道该怎么做.

我需要声明一个数组,但此刻我不知道它的大小.一旦我知道了大小,我就设置了数组的大小.我java我会做的事情如下:

int [] array;
Run Code Online (Sandbox Code Playgroud)

然后

array = new int[someSize];
Run Code Online (Sandbox Code Playgroud)

我如何在C++中执行此操作?

Sin*_*ion 28

你想std::vector在大多数情况下使用.

std::vector<int> array;

array.resize(someSize);
Run Code Online (Sandbox Code Playgroud)

但是如果你坚持使用new,那么你要做的工作比用Java做的多一点.

int *array;
array = new int[someSize];

// then, later when you're done with array

delete [] array;
Run Code Online (Sandbox Code Playgroud)

默认情况下,没有c ++运行时带有垃圾收集,因此delete[]需要避免内存泄漏.你可以使用智能指针类型获得两全其美,但实际上,只需使用std::vector.


cod*_*ict 15

在C++中,您可以:

int *array; // declare a pointer of type int.
array = new int[someSize]; // dynamically allocate memory using new
Run Code Online (Sandbox Code Playgroud)

一旦你完成了使用memory..de-使用delete分配它:

delete[]array;
Run Code Online (Sandbox Code Playgroud)

  • 这是正确和有见地的,但实际上,应该鼓励在C++中使用`std :: vector`.这就是容器的用途,并且从标准容器的明显优势中获得了很好的与RAII等一起使用,在皮肤`std :: vector`下,这个代码在byte-to-byte中.通常,不使用标准容器的原因与模板的可用性,给定的非标准编译器等有关.我不会赞成这个答案,不是因为它错了,而是因为它隐藏了许多重要的相关信息,你应该始终注意这些信息. (4认同)