int [n] [m], wobei n und m zur Laufzeit bekannt sind
Ich muss oft ein 2D-Array erstellen, dessen Breite und Höhe (seien sie n und m) zum Zeitpunkt der Kompilierung unbekannt sind. Normalerweise schreibe ich:
vector<int> arr(n * m);
Und ich greife manuell auf Elemente zu mit:
arr[j * m + i]
Mir wurde kürzlich gesagt, dass ich stattdessen schreiben könnte:
int arr[n][m] // n and m still only known at runtime.
Also hier sind 2 Fragen:
Ist dieses Verhalten vom C ++ Standard erlaubt?Wie soll ich ein solches Array an eine Funktion übergeben? g ++ meldet, dass arr einen Typ hatint (*)[n]
Aber auch hier ist n dynamisch und außerhalb der Funktion, in der es deklariert ist, nicht bekannt (main
).