1

ここで何が間違っていますか?

// file main.cpp

#include <iostream>
#include <boost/numeric/ublas/vector.hpp>
#include <boost/numeric/ublas/matrix.hpp>
#include <boost/numeric/ublas/matrix_proxy.hpp>

namespace ublas = boost::numeric::ublas;

int main()
{
    ublas::vector<double> const v( 10 );
    ublas::matrix<double> m( 1, v.size() );
    ublas::matrix_row<ublas::matrix<double> > r( m, 1 );
    r = v;
    return 0;
}

これは次のメッセージで失敗します:

Check failed in file /usr/local/include/boost/numeric/ublas/functional.hpp at line 1370:
i < size_i
terminate called after throwing an instance of 'boost::numeric::ublas::bad_index'
  what():  bad index
Aborted

ただし、 atvへのより簡潔な方法はありますか?mmain.cpp

4

2 に答える 2

1

もちろん、1 つの xv,size() マトリックスには存在しない最初の行にアクセスしようとしています。あなたは書くべきです:

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

あなたはもっと良いだろうが

row(m, 0) = v;
于 2012-06-22T14:11:52.333 に答える