Je suis tombé sur un quiz impliquant une déclaration de tableau de différentes tailles. La première chose qui m'est venue à l'esprit est que je devrais utiliser l'allocation dynamique avec la new
commande, comme ceci:
while(T--) {
int N;
cin >> N;
int *array = new int[N];
// Do something with 'array'
delete[] array;
}
Cependant, j'ai vu que l'une des solutions permettait le cas suivant:
while(T--) {
int N;
cin >> N;
int array[N];
// Do something with 'array'
}
Après un peu de recherche, j'ai lu que g ++ le permet, mais cela m'a fait réfléchir, dans quels cas est-il alors nécessaire d'utiliser l'allocation dynamique? Ou est-ce que le compilateur traduit cela comme une allocation dynamique?
La fonction de suppression est incluse. Notez cependant que la question ici ne concerne pas les fuites de mémoire.
new OBJ
directement.
std::vector
plutôt (std::vector<int> array(N);
).