2016-11-13 108 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