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