Natknąłem się na quiz, który dotyczył deklaracji tablicowej o różnych rozmiarach. Pierwszą rzeczą, jaka przyszła mi do głowy, jest to, że będę musiał użyć dynamicznej alokacji z newpoleceniem, w następujący sposób:
while(T--) {
int N;
cin >> N;
int *array = new int[N];
// Do something with 'array'
delete[] array;
}
Widziałem jednak, że jedno z rozwiązań dopuszcza następujący przypadek:
while(T--) {
int N;
cin >> N;
int array[N];
// Do something with 'array'
}
Po krótkich badaniach przeczytałem, że g ++ pozwala na to, ale zastanawiało mnie, w jakich przypadkach konieczne jest użycie dynamicznego przydzielania? A może kompilator tłumaczy to jako alokację dynamiczną?
Funkcja usuwania jest włączona. Należy jednak pamiętać, że pytanie tutaj nie dotyczy wycieków pamięci.
new OBJbezpośrednie wywoływanie .
std::vectorzamiast tego (std::vector<int> array(N);).