R
Ja, den Link hab ich mir angeguckt, dort ging es um eine Matrix-Klasse, dessen Datenfeld als eindimensionaler vector realisiert wurde. Ich könnte nun auch in meinem Code das temporäre Datenfeld als 1D-vector implementieren, wobei ich die Index-Rumrechnerei jetzt nicht so schön finde. Ich muss zugeben das Datenfeld meiner Matrix-Klasse als T**-Array realisiert zu haben. Ich möchte das jetzt allerdings nicht mehr ändern, da ich sonst sehr viel Code umschreiben müsste. Problematisch ist vor allem, dass sich zwei Matrizen ein Array teilen können, um Zeit bei manchen Operationen zu sparen. Dazu hab ich ein Attribut angelegt, das angibt, wem das Array nun "gehört". Dass sowas fehleranfällig ist, gebe ich zu. Sicherlich kann man das auch mit vector realisieren, nur das würde mir zu viel Arbeit bedeuten. Und direkt nach dem Umstellen hätte ich 100%-ig deutlich mehr Fehler als vorher. In der konkreten Methode werden zwei Matrizen (auf die naive Art und Weise) multipliziert. Da Matrizen implizit (!) transponiert sein können, schreibe ich die Daten in ein temporäres Array, um nicht immer wieder getEntry() aufrufen zu müssen. getEntry() überprüft, ob der bool-Wert transponiert_ gesetzt ist und gibt dann entweder entries_[i][j] oder entries_[j][i] zurück. Nun möchte ich in der innersten Schleife möglichst wenig Code haben, von daher schreibe ich mir die Daten so in ein Array/vector, dass sie hintereinander im Speicher liegen (d.h. wenn ich A*B berechne, so brauche ich die Daten von A nicht-transponiert und die Daten von B transponiert). Ok, das ist natürlich auch wunderbar mit einem temporären 1D-vector möglich. Bei kleinem k (also wenn A = (i x k) und B = (k x j)) ist das natürlich ein ziemlicher Overhead, aber das ist eine andere Geschichte.
Ich wollte jetzt eigentlich nur kurz schreiben, was meine Matrizen können bzw. machen und was hinter dem temporären Array steckt.