Как создать динамический массив целых чисел в С++ с помощью ключевого слова new
?
Как создать динамический массив целых чисел
Ответ 1
int main()
{
int size;
std::cin >> size;
int *array = new int[size];
delete [] array;
return 0;
}
Не забывайте delete
каждый массив, который вы выделяете с помощью new
.
Ответ 2
Так как С++ 11, существует безопасная альтернатива new[]
и delete[]
, которая имеет нулевую нагрузку в отличие от std::vector
:
std::unique_ptr<int[]> array(new int[size]);
В С++ 14:
auto array = std::make_unique<int[]>(size);
Оба вышеизложенного полагаются на один заголовочный файл, #include <memory>
Ответ 3
Возможно, вам захочется использовать стандартную библиотеку шаблонов. Он прост и удобен в использовании, плюс вам не нужно беспокоиться о распределении памяти.
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
Ответ 4
int* array = new int[size];
Ответ 5
Как только возникает вопрос о динамическом массиве, вы можете не просто создать массив с переменным размером, но и изменить его размер во время выполнения. Вот пример с 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 change is size - e.g. 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)
.
Ответ 6
динамически выделять некоторую память с помощью new
:
int* array = new int[SIZE];