Qt 3D-array with Qt-Objekts like QVector

后端 未结 2 1268
悲哀的现实
悲哀的现实 2021-01-24 20:32

How can I create a 3D-array only with Qt-Objects? The array should be a 3D-integer-array. I have tried to create a standard 3D-array on the heap. To allocate the memory on the h

相关标签:
2条回答
  • 2021-01-24 20:54
    #include <QCoreApplication>
    #include <QVector>
    #include <QDebug>
    
    int main(int argc, char *argv[])
    {
        QCoreApplication a(argc, argv);
    
        int dim_0 = 3;
        int dim_1 = 3;
        int dim_2 = 3;
        int default_val = 0;
        QVector < QVector < QVector< int > > > vec(dim_0,
                                                   QVector < QVector <int > > (dim_1,
                                                                               QVector < int > (dim_2, default_val)));
    
        for( int i = 0; i < dim_0; i++)
        {
            for ( int j = 0; j < dim_1; j++)
            {
                for ( int k = 0; k < dim_2; k++)
                {
                    vec[i][j][k] = i*100 + j*10 + k;
                }
            }
        }
    
        qDebug() << vec;
    
        return a.exec();
    }
    

    Hope that helps.

    0 讨论(0)
  • 2021-01-24 21:09

    HEAP CORRUPTION occurred because of <=. If you replace <= to <, your code will work.

    const int scalefaktor = 16;
    int*** anzPixel3d = new int**[scalefaktor];
    for (int i = 0; i < scalefaktor ; i++)
    {
        anzPixel3d[i] = new int*[scalefaktor];
        for (int k = 0; k < scalefaktor ; k++)
        {
            anzPixel3d[i][k] = new int[scalefaktor];
        }
    }
    
    for (int j = 0; j < scalefaktor ; j++)
    {
        for (int m = 0; m < scalefaktor ; m++)
        {
            delete [] anzPixel3d[j][m];
        }
        delete [] anzPixel3d[j];
    }
    delete [] anzPixel3d;
    
    0 讨论(0)
提交回复
热议问题