2016-11-10 3 views
0

Ich würde gerne Operationen mit Eigen::SparseMatrix<bool> durchführen, ohne die Matrizen selbst durchlaufen zu müssen. Dies war früher in Eigen 3.2 möglich, aber dieser Code wird in Version 3.3 nicht mehr kompiliert. Zum Beispiel der folgende Code funktioniert in 3.2 Fein:Eigen 3.3 SparseMatrix <bool> Operationen

Eigen::SparseMatrix<bool> a(3,3), b(3,3), c(3,3); 
a = b + c; 

Gibt es eine einfache/kurze Art und Weise zu tun „und“ und „oder“ Operationen in Eigen 3.3 ohne Schleifen schreiben?

Antwort

0

Um mit dem C++ - Standardverhalten konsistent zu sein, gibt das Hinzufügen boolescher Matrizen jetzt Integerausdrücke zurück, aber gleichzeitig ist aufgrund der Mehrdeutigkeit das Hinzufügen boolescher Matrizen veraltet. Bei dichten Matrizen haben Sie zu diesem Zweck Zugriff auf die Operatoren || und &&, die auch zu dünn besetzten Matrizen hinzugefügt werden müssen (für 3.3.1).

der Zwischenzeit können Sie immer noch umgehen, indem das Ergebnis des Gießens Bool (und ignorieren die veraltete Warnung):

a = (b+c).cast<bool>(); 
+0

, das funktioniert! Vielen Dank! –

Verwandte Themen