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.


  • Mod

    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 weniger

    contra:
    - nicht so intuitiv
    - mögliche fehler bei der index abfrage


  • Mod

    Skym0sh0 schrieb:

    contra:
    - nicht so intuitiv

    Wieso? Der Benutzer sieht doch nix davon.

    - mögliche fehler bei der index abfrage

    Welche?


Anmelden zum Antworten