我在这里做错了什么?
// 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
但是,在
v
上,还有更多简便的方法可以将m
转换为main.cpp
吗? 最佳答案
这行不通吗?
std::copy(v.begin(), v.end(), m.begin1());
这将占据
v.size()
的前m
元素,值为v。以下代码编译并在我的系统上运行(提升1.48和g++ 4.62)
#include <boost/numeric/ublas/vector.hpp>
#include <boost/numeric/ublas/matrix.hpp>
#include <algorithm>
int main()
{
boost::numeric::ublas::vector<int> v(10);
boost::numeric::ublas::matrix<int> m(10,10); //using v.size() also works
std::copy(v.begin(), v.end(), m.begin1());
return 0;
}
关于c++ - 如何将boost::numeric::ublas::vector复制到矩阵?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/9420486/