随机(只读)访问Eigen :: SparseVector的元素

时间:2017-04-01 02:31:16

标签: c++ eigen eigen3

考虑以下愚蠢的代码

typedef Eigen::SparseVector<std::complex<double>, Eigen::ColMajor,long long> Vector;

Vector V = CreateData();

for(i=0;i<V.size(),++i)
{
  DoSomething( Vector.coeffRef(i));
}

我有趣(出于某种目的)访问(比如说)稀疏向量V的每个元素,并且当访问非初始化条目时,当然期望返回零。

我惊奇地发现,在访问一个不存在的\ initialized条目时,此条目正在读取,当然正确值为零,但为什么? ?

我对这种行为绝对不感兴趣。每当访问非初始化条目以进行读取时,我想要获得的全部归零,否则转换为完整矩阵的速度更快。 是否有.coeffRef的替代方案不会分配新条目。

1 个答案:

答案 0 :(得分:2)

使用coeff()方法代替coeffRef()方法。它完全符合你的要求。另一方面,coeffRef()返回读写访问的引用,因此该元素必须存在。