Я наткнулся на тест, который включал объявление массива с различными размерами. Первое, что пришло мне в голову, это то, что мне нужно будет использовать динамическое распределение с 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);).