Ich bin auf ein Quiz gestoßen, das eine Array-Deklaration mit unterschiedlichen Größen beinhaltete. Das erste, was mir in den Sinn kam, war, dass ich mit dem new
Befehl eine dynamische Zuordnung verwenden müsste , wie folgt :
while(T--) {
int N;
cin >> N;
int *array = new int[N];
// Do something with 'array'
delete[] array;
}
Ich habe jedoch gesehen, dass eine der Lösungen den folgenden Fall zulässt:
while(T--) {
int N;
cin >> N;
int array[N];
// Do something with 'array'
}
Nach ein wenig Recherche habe ich gelesen, dass g ++ dies zulässt, aber ich habe immer wieder darüber nachgedacht, in welchen Fällen ist es dann notwendig, die dynamische Zuordnung zu verwenden? Oder übersetzt der Compiler dies als dynamische Zuordnung?
Die Löschfunktion ist enthalten. Beachten Sie jedoch, dass es hier nicht um Speicherlecks geht.
new OBJ
direkten Aufruf zuzuweisen .
std::vector
stattdessen (std::vector<int> array(N);
).