Я наткнулся на тест, который включал объявление массива с различными размерами. Первое, что пришло мне в голову, это то, что мне нужно будет использовать динамическое распределение с new
командой, например так:
while(T--) {
int N;
cin >> N;
int *array = new int[N];
// Do something with 'array'
delete[] array;
}
Однако я увидел, что одно из решений допускает следующий случай:
while(T--) {
int N;
cin >> N;
int array[N];
// Do something with 'array'
}
После небольшого исследования я прочитал, что g ++ позволяет это, но это заставило меня задуматься, в каких случаях тогда необходимо использовать динамическое распределение? Или компилятор переводит это как динамическое распределение?
Функция удаления включена. Обратите внимание, однако, что вопрос здесь не об утечках памяти.
new OBJ
непосредственного вызова .
std::vector
вместо (std::vector<int> array(N);
).