Подтвердить что ты не робот

Как создать динамический массив целых чисел

Как создать динамический массив целых чисел в С++ с помощью ключевого слова new?

4b9b3361

Ответ 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];