Index von 3D Array



  • Hallo,

    ich habe ein Array der Dimension 100*100*50. Nun möchte ich durch alle Elemente iterieren und habe es so versucht:

    int data[100*100*50;
    for (int x = 0; x < 100; ++x)
        for (int y = 0; y < 100; ++y)
            for (int z = 0; z < 50; ++z)
                data[x + y * 100 + z * 100 * 50] = 0; // x + y * width + z * width * depth
    

    So findet man es auch in allen einschlägigen Quellen.
    Wenn ich jetzt aber nachrechne, welcher der maximal erreichbare Index ist dann komme ich auf

    99 + 99 * 100 + 49 * 100 * 49 = 254999 != 499999
    

    Das Array hat aber 500000 Elemente. Bin ich jetzt vollkommen auf den Kopf gefallen, was ist hier falsch?



  • Kopffaller schrieb:

    Das Array hat aber 500000 Elemente. Bin ich jetzt vollkommen auf den Kopf gefallen, was ist hier falsch?

    Nichts - 0...499999 sind 500000 Elemente.



  • Wie ich erwähnte ist der höchste Index den ich erreiche 254999.



  • 99 + 99 * 100 + 49 * 100 * 100 = 499999



  • data[x + y * 100 + z * 100 * 50] = 0; // x + y * width + z * width * depth
    

    Ist auch falsch.

    data[x + y * 100 + z * 100 * 100] = 0; // x + y * width + z * width * height
    

Log in to reply