2016-11-10 74 views
0

我想使用Eigen::SparseMatrix<bool>執行操作,而無需自行循環矩陣。 這在Eigen 3.2中可以使用,但代碼不再在3.3版本中編譯。 例如,下面的代碼在3.2工作罰款:eigen 3.3 SparseMatrix <bool>操作

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

是否有這樣做的一個簡單/短的路「和」和「或」本徵3.3操作無需編寫循環?

回答

0

爲了與C++標準行爲保持一致,現在添加布爾矩陣返回整型表達式,但同時由於添加布爾矩陣的歧義性而被棄用。對於密集矩陣,爲此目的您可以訪問運營商||&&,並且這些也必須添加到稀疏矩陣(對於3.3.1)。

同時,您仍然可以通過將結果爲bool解決方法(而忽略棄用警告):

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

這一工程!謝謝! –