Mehrdimensionale Arrays



  • Per hier schon vorgestelltem Template kann man einen mehrdimensionalen Vektor verkleinern, vergrößern usw. Für unterschiedliche Dimensionen benötigt man aber auch verschiedene Templates, also für jede Dimension ein <T>. Gibt es schon eine Schablone für das Umwandeln der Dimensionen? Beispiel: Ich möchte einen dreidimensionalen Vektor in einen vierdimensionalen, zweidimensionalen oder n-dimensionalen umwandeln (brauche das für die betriebswirtschaftliche Modellierung eines Simplex, bitte keine Diskussion jetzt darüber) und ich möchte nicht viele verschiedene Templates dafür einsetzen, da im Vorfeld noch nicht klar ist, welche Dimension benötigt wird. Ein 3-D-Vektor (2x4x3) soll also umgewandelt werden können in einen 6-D-Vektor (2x4x5x1x3x2) usw.
    Ideal wäre etwa folgender Aufruf (so in der Art): MakeDim (3,2,4,3), wobei der erste Parameter die Dimensionen angibt. Dann möchte ich einfach sagen können: MakeDim(5,3,4,5,6,7), also einen 5-D-Vektor erstellen können. Dieser 5-D-Vektor, wie alle anderen n-D-Vektoren auch, soll dann aber auch mit meinetwegen ResizeDim(5,1,2,3,4,5) in seiner Größe verändert werden können.
    Wurde dazu hier schon eine Lösung gepostet, ich habe leider nichts gefunden.



  • Du könntest ja eine Art Wrapper für std::vector schreiben, der z.B. fähig wäre einen 10-dimensionalen Vector zu speichern. Für das Erzeugen neuer Dimensionen und ähnliches, könntest du durch passende Funktionen bereitstellen.
    Wenn es aber tatsächlich möglich sein soll, n-dimensionale - also unbestimmt große - Vectoren zu erzeugen, ginge dies mit dieser Lösung nicht. Hierfür würde ich auch keine Vorgehensweise kennen...


Anmelden zum Antworten