如何创build一个dynamic的整数数组
如何使用new
关键字在C ++中创builddynamic数组的整数?
int main() { int size; std::cin >> size; int *array = new int[size]; delete [] array; return 0; }
不要忘记delete
所有分配的new
数组。
自从C ++ 11以来,除了std::vector
,还有一个安全的替代scheme,即new[]
和delete[]
,它是零开销的:
std::unique_ptr<int[]> array(new int[size]);
在C ++ 14中:
auto array = std::make_unique<int[]>(size);
上述两者都依赖于相同的头文件#include <memory>
您可能要考虑使用标准模板库。 它使用起来简单易用,而且不必担心内存分配问题。
http://www.cplusplus.com/reference/stl/vector/vector/
int size = 5; // declare the size of the vector vector<int> myvector(size, 0); // create a vector to hold "size" int's // all initialized to zero myvector[0] = 1234; // assign values like a c++ array
int* array = new int[size];
只要有关dynamic数组的问题,您可能不仅需要创build具有可变大小的数组,而且还需要在运行时更改它的大小。 这里是memcpy
一个例子,你也可以使用memcpy_s
或者std::copy
。 取决于编译器,可能需要<memory.h>
或<string.h>
。 当使用这个函数时,你分配新的内存区域,复制原始内存区域的值,然后释放它们。
// create desired array dynamically size_t length; length = 100; //for example int *array = new int[length]; // now let's change is's size - eg add 50 new elements size_t added = 50; int *added_array = new int[added]; /* somehow set values to given arrays */ // add elements to array int* temp = new int[length + added]; memcpy(temp, array, length * sizeof(int)); memcpy(temp + length, added_array, added * sizeof(int)); delete[] array; array = temp;
您可以使用常量4而不是sizeof(int)
。
使用new
dynamic分配一些内存:
int* array = new int[SIZE];