隨着徵:給定一個大的稀疏矩陣,這將是決定如果在給定位置的值是空或不是最快的方法是什麼?稀疏矩陣:確定值是否爲空的最快方法?
必須說我用這個稀疏矩陣實現來存儲非數字值。這與this question有關。
目前,我有什麼是(與T
我的數據類型):
Eigen::SparseMatrix<T> mat(n,n); // n could be 1000, 10000, ...
// fill
T e1(/* some values */);
mat.insert(3, 4) = e1;
...
檢查與完成:
T elem = mat.coeff(row, col);
if(elem == T()) // use default constructor
std::cout << "empty !\n";
但這並不能滿足我,因爲這意味着兩一個複製操作和一個深度比較操作符。我想可能是這樣的:
if(mat.isNull(row, col))
std::cout << "empty !\n";
有沒有辦法我可以做到這一點?或者獲取一個返回nullptr
如果爲空的指針? 我檢查Tutorial pages,quick ref和relevant manual pages,但沒有發現任何東西。
如果這似乎是不可能的,那麼我想與地圖保存所有滿倉沿着一類加以包裝。這樣我就可以快速找出給定的行,col是否有值。
附錄:我有徵3.2,但如果需要可以切換到3.3。
編輯:鏈接的問題詢問如何獲取一組非空元素。我所要求的是「我怎麼知道(row,col)的值是否爲空?」。不是傻瓜AFAIK。
的可能的複製[艾根稀疏矩陣得到非零元素的指數(http://stackoverflow.com/questions/28854640/eigen-sparse-matrix-get-indices-of-nonzero-elements) – timrau
@timrau真的嗎?請你再讀一遍另一個問題,重新考慮你的國旗。我**不**問如何獲得一組非空值,但如何知道給定的(行,列)位置是否保持空值。 – kebs
我之前評論中的代碼片段錯誤。 – timrau