Mi sono imbattuto in un quiz che riguardava la dichiarazione di array con dimensioni diverse. La prima cosa che mi è venuta in mente è che avrei bisogno di usare l'allocazione dinamica con il new
comando, in questo modo:
while(T--) {
int N;
cin >> N;
int *array = new int[N];
// Do something with 'array'
delete[] array;
}
Tuttavia, ho visto che una delle soluzioni ha consentito il seguente caso:
while(T--) {
int N;
cin >> N;
int array[N];
// Do something with 'array'
}
Dopo un po 'di ricerche ho letto che g ++ lo consente, ma mi ha fatto pensare, in quali casi è quindi necessario utilizzare l'allocazione dinamica? O è che il compilatore traduce questo come allocazione dinamica?
La funzione di eliminazione è inclusa. Si noti, tuttavia, che la domanda qui non riguarda le perdite di memoria.
new OBJ
direttamente.
std::vector
invece (std::vector<int> array(N);
).