Search code examples
c++boostsparse-matrixublas

Accessing the indices of non-zero elements in a UBLAS sparse vector


How can I know the index of the first non-zero element in a sparse_vector in ublas and each subsequent nonzero element as well? The function begin() gives me an iterator that can be used to know the first non-zero value stored, not its index in the vector.


Solution

  • Here is the answer, after Oswin Krause, from the ublas mainling list:

    Iterators offer a method index() which returns the desired result. But remember that only the const_iterator is really sparse!

    for(SparseVector::const_iterator pos = sparseVec.begin(); pos != sparseVec.end();++pos){ std::cout << pos.index()<< " "<< *pos; }