Frage an die Cracks vom Anfänger!



  • Hallo Ihr Cracks!

    Ich habe folgende Frage:

    Ich analysiere gerade einen fremden Sourcecode, und bin auf fologendes gestoßen:

    Ich habe in einer h-Datei folgendes:

    typedef double TText;
    

    in einer anderen h-Datei steht:

    vector<vector<vector<TText> > > blaText;
    

    In einer cpp-Datei wird folgendes geschrieben:

    blaText [time][blaNr][xyzNr] = ....
    

    Wenn ich mir blaText im Debugger (vc++ 6.0) anzeigen lasse, so wird unter Myfirst - Myfirst nur ein "einziger" Wert angezeigt, nämlich: -1,00000000

    Wie kann dann dem blaText[time][blaNr][xyzNr] überhaupt etwas zugewiesen werden, wenn es nur einen Wert im Vector gibt? Ich kann das nicht ganz nachvollziehen. Warum die drei []-Klammern? Kann mir bitte jemand das erklären?

    Danke!

    Gruß
    Tobi



  • Das ist ein Vektor mit 3 "Dimensionen".

    1. Dimension:
    Index: 0 1 2 3 4 5
    Wert : 8 9 4 3 8 7

    zB test[2] == 4

    2. Dimensionen:
    x 0 1 2
    0 8 9 2
    1 1 4 8
    2 4 5 3

    zB test[2][2] == 4

    3. Dimensionen kann ich nicht mehr zeichnen, aber als Beispiel kannst du dir diesen "Zauberwürfel" (Rubrik's Cube oder so) vorstellen, den man so verdrehen kann. Jeder kleine Würfel ist ein Wert und der ganze Würfel das Datenfeld/vector.

    Hoffe es stimmt so.



  • Hi!

    Danke für Deine Antwort! Aber ich verstehe es immer noch nicht!

    Wie kommt folgendes zustande?

    blaText [time][blaNr][xyzNr] = ....
    

    Wo kann ich das im Code einsehen? Per Debugger sehe ich nischt von time, blaNr oder xyzNr. Ich bin verwirrt!...:(

    Kannst Du mir das bitte näher erläutern?



  • Münzbieger schrieb:

    2. Dimensionen:
    x 0 1 2
    0 8 9 2
    1 1 4 8
    2 4 5 3

    zB test[2][2] == 4

    ich will mal so kleinlich sein und sagen das in deinem feld[2][2]==3 ist 🙂

    zum thema

    TText = double (wie double a)
    vector<TText> = feld von doubles (wie double a[])
    vector<vector<TText> > = feld von feldern von doubles (wie double a[][])
    vector<vector<vector<TText> > > = feld von feldern von feldern von doubles (wie double a[][][])



  • ich will mal so kleinlich sein und sagen das in deinem feld[2][2]==3 ist 🙂

    Ach, stimmt 😉 Liegt wohl daran, dass ich die Nummerierung erst bei 1 angefangen hatte und es auf 0 geändert habe.

    Erstmal solltest du "normale" Arrays/Vectors verstanden haben. Dabei ist http://www.schornboeck.net/ckurs/inhalt.htm hilfreich.
    Dann ist http://home.twcny.rr.com/amantoan/cweb/dimary.htm gut, leider in englisch aber in deutsch habe ich nichts gutes gefunden.

    Falls du dir 3+ Dimensionen nicht vorstellen kannst, zwei "Bilder" eines 3D-Arrays:
    http://matrix.netsoc.tcd.ie/~duncan/college/2ba2/images/3d_array.gif
    http://www.freenetpages.co.uk/hp/csa/3D Array.jpg


Anmelden zum Antworten