提升ublas::compressed_matrix
應該只爲非零元素分配空間。但在下面的例子中,我得到了奇怪的結果。提升壓縮矩陣存儲
#include <boost/numeric/ublas/matrix_sparse.hpp>
#include <boost/numeric/ublas/io.hpp>
using namespace std;
using namespace boost::numeric::ublas;
int main() {
{
compressed_matrix<double,row_major> m (4, 4, 2*2);
cout << sizeof(m) << "\n"; // prints 56
cout << m << std::endl;
}
{
matrix<double> m (4, 4);
cout << sizeof(m) << "\n"; // prints 20
cout << m << std::endl;
}
return 0;
}
爲什麼ublas::matix
服用與2*2=4
非零元素僅20
字節4x4 matrix
(而不是8*4*4=128
字節),而ublas::compressed_matrix
正在56
字節(而不是4*8=32
字節)?
我也很困惑如何指定ublas::compressed_matrix
中的非零元素的位置。如果我嘗試存儲超過構造函數中設置的非零元素的數量,會發生什麼情況?
請幫助澄清。