2016-11-13 107 views

回答

1

它仍然存在。在Eigen/src/SparseCore/SparseCompressedBase.h第56行有一个定义(对于SparseCompressedBase)。

template<typename Derived> 
class SparseCompressedBase 
    : public SparseMatrixBase<Derived> 
{ 
    ... 
    protected: 
    typedef typename Base::IndexVector IndexVector; 
    Eigen::Map<IndexVector> innerNonZeros() { return Eigen::Map<IndexVector>(innerNonZeroPtr(), isCompressed()?0:derived().outerSize()); } 
    const Eigen::Map<const IndexVector> innerNonZeros() const { return Eigen::Map<const IndexVector>(innerNonZeroPtr(), isCompressed()?0:derived().outerSize()); } 

    public: 

    /** \returns the number of non zero coefficients */ 
    inline Index nonZeros() const 
    { 
     if(Derived::IsVectorAtCompileTime && outerIndexPtr()==0) 
     return derived().nonZeros(); 

更是这样,一个快速的grep显示所有的定义(3.3.0):

$的grep -rn “指数非零()” *
SRC /核心/ DenseBase.h: 210:内联索引nonZeros()const {return size(); }
src/SparseCore/AmbiVector.h:39:Index nonZeros()const;
src/SparseCore/SparseBlock.h:42:Index nonZeros()const
src/SparseCore/SparseBlock.h:436:Index nonZeros()const {return Dynamic; }
src/SparseCore/SparseCompressedBase.h:56:内联索引nonZeros()const
src/SparseCore/SparseMap.h:87:内联索引nonZeros()const {return m_zero_nnz [1]; }
src/SparseCore/SparseTranspose.h:31:内联索引nonZeros()const {return derived()。nestedExpression()。nonZeros(); }
src/SparseCore/SparseVector.h:140:内联索引nonZeros()const {return m_data.size(); }

+0

要完成,确实在3.3 nonZeros()已经从一些表达式中删除了,nonZeros只能返回一个粗略的估计值。 – ggael