2d array /konstantenwert
-
Hallo!
Ich möchte 2D Array initialisieren mit der Längen der Strings,die über kommando zeile übergeben werden.zb.
int main(int argv,char* argc[]){ string s=args[1], k=args[2]; int p[s][k]; }Es funktioniert nicht. Wie kann man es anders machen?
Vielen Dank im Voraus.
-
Nimm vector. Für dich bietet es sich an, einen 1D-Vector der Größe dimenion1*dimension2 zu kapseln und dann die 2D-Zugriffe entsprechend umzulenken.
-
sorry. muss so sein: int main(int argv,char* argc[]){ string s=args[1], k=args[2]; int p[s.size()][k,size()]; }
-
Selbst so ist es Käse - in C++ müssen die Array-Größen bereits beim Übersetzen des Programms bekannt sein (neuere C-Varianten kennen VLAs), für Datensammlungen variabler Größe nimmt man üblicherweise Container wie std::vector.
(PS: Bist du sicher, daß die Größenberechnung stimmt? Ein Aufruf wie "prog 10 10" würde dir ein 2*2-Array liefern)
-
SeppJ schrieb:
Für dich bietet es sich an, einen 1D-Vector der Größe dimenion1*dimension2 zu kapseln und dann die 2D-Zugriffe entsprechend umzulenken.
wieso?
pros:
- kein zusätzlicher overhead der vector member
- eine dereferenzierugnsebene wenigercontra:
- nicht so intuitiv
- mögliche fehler bei der index abfrage
-
Skym0sh0 schrieb:
contra:
- nicht so intuitivWieso? Der Benutzer sieht doch nix davon.
- mögliche fehler bei der index abfrage
Welche?