Sorry für das Thema - Ich konnte kein besseres erstellen ...Wie kann ich eine "Eigen" - Matrix blockweise initialisieren?
Was ich meine ist: Ich habe einen 2D-Vektor a und einen 3D-Vektor b. Wenn ich b initialisieren, b (0,1) sollte a und b (2) eingestellt werden soll Dieser Code funktioniert auf 1 gesetzt werden:
const Vector2d a(1,2);
Vector3d b(0,0,1);
b.head<2>() = a;
Aber was würde ich lieber (unter anderem wegen der const
):
const Vector2d a(1,2);
const Vector3d b(a, 1);
Dies funktioniert nicht. Gibt es einen Weg, dies zu erreichen?
Ich bin nicht vertraut genug mit Eigen, um eine richtige Antwort zu geben, aber wenn nichts existiert, können Sie immer eine Lambda-Funktion schreiben, die das zurückgibt, was Sie wollen und das Ergebnis davon einer 'const' zuweisen. – Darhuuk
Ich, otoh, bin nicht wirklich vertraut mit Lambdas in C++. Benutzte es nur jetzt oder jetzt. Können Sie mir bitte ein Beispiel für diese Lösung geben? (Es wäre rein akademisch, weil die Antwort unten schon meinen Bedürfnissen entspricht ...) – Markus