How to efficiently copy sparse matrix row to vector?

"Reich, Darrell" <[email protected]>
Newsgroups gmane.comp.lib.boost.ublas
Message-ID <56A4B6DB41508E44B3E3BE1603D25BCF02C76365@0461-its-exmb01.us.saic.com>
What is the best way to copy a row from an N x N sparse matrix into a
vector of size N? I see a possible solution using std::copy or the
overloaded equals sign for the opposite question here:

http://stackoverflow.com/questions/9420486/how-to-copy-a-boostnumericubl
asvector-to-a-matrix

std::copy(v.begin(), v.end(), m.begin2());

ublas::matrix_row<ublas::matrix<double> > r( m, 0 );
row(m, 0) = v;

I understand from the documentation about the iterators used in the copy
command above. The overloaded '>' is a surprise. I'm resisting using for
loops. Please clarify the syntax of the most efficient way to do this
for the sparse matrix example code below.

#include <boost/numeric/ublas/vector_sparse.hpp>
#include <boost/numeric/ublas/matrix_sparse.hpp>

const int n = 1e6;
boost::numeric::ublas::compressed_matrix<float> M(n,n); // sparse
boost::numeric::ublas::compressed_vector<float> v(n); // sparse
M(0,0) = 1;
M(1,1) = 2;
// TODO: copy row of matrix to vector...
newM = M * v;

Thank you for your help! So far boost has been a pleasure to use as I
brush up on my linear algebra and C++ syntax--Fortran and java have
turned my mind into mush. All of my frustrations so far have been
successfully blamed on Microsoft Visual C++ for Windows. Google has
successfully matched me to equally frustrated individuals, a few of
which actually posted the correct solution so I've got my sample code to
compile! Could they hide the include path better so it takes a few more
mouse clicks?

I'm warming up to the idea of the header library idea more and more very
cleaver.
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.