Как создать динамический массив целых чисел - PullRequest
66 голосов
/ 27 октября 2010

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

Ответы [ 6 ]

98 голосов
/ 27 октября 2010
int main()
{
  int size;

  std::cin >> size;

  int *array = new int[size];

  delete [] array;

  return 0;
}

Не забудьте delete каждый массив, который вы выделите с помощью new.

45 голосов
/ 24 апреля 2015

Начиная с C ++ 11, существует безопасная альтернатива new[] и delete[], которая в отличие от std::vector:

std::unique_ptr<int[]> array(new int[size]);

в C ++ 14:

* не требует дополнительных затрат.1008 *

Оба из перечисленных выше опираются на один и тот же заголовочный файл, #include <memory>

25 голосов
/ 27 октября 2010

Вы можете рассмотреть возможность использования стандартной библиотеки шаблонов. Он прост и удобен, плюс вам не нужно беспокоиться о распределении памяти.

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
5 голосов
/ 27 октября 2010
int* array = new int[size];
3 голосов
/ 31 декабря 2015

Как только вопрос касается динамического массива, вы можете захотеть не только создать массив с переменным размером, но и изменить его размер во время выполнения.Вот пример с 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 - 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).

0 голосов
/ 27 октября 2010

динамически распределяет часть памяти, используя new:

int* array = new int[SIZE];
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...