3dimensionales Array allocieren --die Dritte Dimension als Vektor
-
Ich möchte eine dreidimensionales Array allocieren jedoch möchte ich die letzte bzw. Dritte Dimension als Vektor machen.
Wie müsste so etwas aussehen?
Für mich ist die Vektorgeschichte noch neu.
-
std::vector<std::vector<std:vector<Typ > > > my3darray;
allerdings stark fraglich ob das so sinnvoll ist... das kann unter umständen ein megaspeicherfresser werden
-
int*** 3DArr = new int**[20];
for (int i = 0; i < 20 ; i++)
{ 3DArr[i] = new int *[10];for (int ii = 0; ii < 10 ; ii++)
{vector<int> vec;
3DArr[i][ii] = vec.resize(2);
}
}Ich habe aber keine Ahnung wie das funktionieren könnte.
Ich brauche auch nur die dritte Dimension des Arrays veränderbar(als Vektor).
Auch wegen Performance wollte ich nicht einen Dreidimensionalen Vector verwenden.
Gruß ABC++
-
na dann mach ein 2dimensionales zeigerarray von std::vectoren...
un die zeiger zeigen dann jeweils auf ein std::vector...
-
Wie müßte denn sowas aussehen (zeigerarray für std::vectoren)?
Gruß ABC++
-
Ich muss ehrlich gestehen ich weiss noch nichtmal ob mein compiler sowas überhaupt fressen wird und ob das auch wirklich sinnvoll ist... auf so ne kranke idee bin ich bisher noch nciht gekommen aber vom prinzip her würde ichs dann so machen
int i,j,x,y; x=... y=... std::vector<int>*** my3darry; my3darry= new std::vector<int>**[x]; for(i=0;i<x;++i){ my3darry[i]= new std::vector<int>*[y]; for(j=0;j<y;++j) my3darry[i][j]= new std::vector<int>; }
-
So funzt jetzt. Danke noch mal.
//Ein Dreidimensionales Array --letzte Ebene als Vector int X=10; int Y=10; int Z=10; std::vector<int>** my3darry; my3darry= new std::vector<int>*[X]; for(i=0;i<x;++i){ my3darry[i]= new std::vector<int>[y]; for(j=0;j<y;++j) my3darry[i][j].resize(Z); //Test my3darry[2][1][4]=45; printf(" Test %d", my3darry[2][1][4]); //= 45
Gruß ABC++