自己的 SparseMatrix 储备 nnz

Eigen SparseMatrix reserve nnz

我想知道 Eigen 中的 reserve 方法是否也为 外部索引 内部索引(在 3-CSC 情况下。)

这意味着如果我这样做

n = 1000
SparseMatrix<float> A;
A.reserve(n)

然后

文档只说

void Eigen::SparseMatrix<...>::reserve    (Index reserveSize) 

Preallocates reserveSize non zeros.

Precondition: the matrix must be in compressed mode.


谁能澄清一下?或者说说预订政策?谢谢

不,矩阵的大小应该是相当静态的,所以 reserve(n) 只为 non-zeros 分配 space。如果维度未知,可以从上限开始:

SparseMatrix<float> A(n,n);

保留,例如:

A.reserve(10*n);

完成并知道最终尺寸后,将其缩小:

A.conservativeResize(rows,cols);