ブースト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
のみを取得するのですか?20
4x4 matrix
8*4*4=128
ublas::compressed_matrix
2*2=4
56
4*8=32
また、でゼロ以外の要素の場所を指定する方法もわかりませんでしたublas::compressed_matrix
。コンストラクターに設定されたゼロ以外の要素の数を超えて格納しようとするとどうなりますか?
明確にするのを手伝ってください。