Farklı boyutlarda dizi bildirimi içeren bir sınav tökezledi. Aklıma gelen ilk şey şu new
komutla dinamik ayırma kullanmanız gerekecekti , şöyle:
while(T--) {
int N;
cin >> N;
int *array = new int[N];
// Do something with 'array'
delete[] array;
}
Ancak, çözümlerden birinin aşağıdaki duruma izin verdiğini gördüm:
while(T--) {
int N;
cin >> N;
int array[N];
// Do something with 'array'
}
Biraz araştırma yaptıktan sonra g ++ 'nın buna izin verdiğini okudum, ancak beni düşünmeye devam etti, hangi durumlarda dinamik ayırma kullanmak gerekli? Yoksa derleyici bunu dinamik ayırma olarak mı çeviriyor?
Silme işlevi dahildir. Bununla birlikte, buradaki sorunun bellek sızıntıları ile ilgili olmadığını unutmayın.
new OBJ
doğrudan çağırarak nesneleri ayırmak hala yaygın bir uygulamadır .
std::vector
bunun yerine (std::vector<int> array(N);
) kullanın .