考虑以下愚蠢的代码
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
的替代方案不会分配新条目。
答案 0 :(得分:2)
使用coeff()
方法代替coeffRef()
方法。它完全符合你的要求。另一方面,coeffRef()
返回读写访问的引用,因此该元素必须存在。