Ich suche in die Matrix-Klassenbibliothek Eigen und der docs Zustand, dass eine Klasse Matrix Vorlage kann unter Verwendung der folgenden Template-Parameter instanziiert werden:Wie kann die Speicherzuweisung in Abhängigkeit von den Vorlagenparametern gesteuert werden?
Matrix<typename Scalar, int RowsAtCompileTime, int ColsAtCompileTime>
wo Scalar
die Art der Matrix-Koeffizienten (Doppel, float, Int, komplex, etc ...). RowsAtCompileTime
und ColsAtCompileTime
sind die Matrix-Dimensionen.
Zum Beispiel eine 4x4 Matrix von Schwimmern instanziert werden könnte wie folgt aussehen:
Matrix<float, 4, 4> matrix;
Die Eigen docs Zustand, dass im vorherigen Fall, da die Zeilen bei der Kompilierung bekannt sind, und für „kleine "Matrizen, Speicher für die Matrix-Elemente ist statisch zugeordnet.
Allerdings, wenn Sie Speicher dynamisch zuzuweisen wählen (für große Matrizen oder weil Sie nicht wissen, bei der Kompilierung der Anzahl der Zeilen und Spalten), können Sie die folgende Vorlage Instanziierung verwenden, die dynamisch Speicher zuweisen werden:
Meine Frage ist, wie wird dies konzeptionell mit dem C++ - Template-Mechanismus erreicht? Da ich mich hauptsächlich für die C++ - Techniken interessiere, die dazu verwendet werden, könnte mir bitte ein kurzes Beispiel mit einem Stack-Typ geben, bei dem die Speicherzuweisung auf ähnliche Weise gesteuert wird? Vielen Dank!
Vielen Dank für Ihre Antwort und hilft mir dies herauszufinden! Ich denke, es gibt einen leichten Tippfehler in Ihrer Antwort: operator [] in Vector soll T zurückgeben und nicht int korrekt? – BigONotation
@BigLudinski Korrekt. Ich werde das reparieren. – Andrew