如何将boost::numeric::ublas::vector复制到矩阵
How to copy a boost::numeric::ublas::vector to a matrix?
我做错了什么?
// 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
然而,在main.cpp
处,有没有更简洁的方法将v
转化为m
?
这不起作用吗?
std::copy(v.begin(), v.end(), m.begin1());
这将占用具有v.值的CCD_ 5的第一个CCD_
以下代码在我的系统上编译并运行(boost 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;
}
当然,您正在尝试访问第一行,而这对于1 x v,size()矩阵来说是不存在的。你应该写:
ublas::matrix_row<ublas::matrix<double> > r( m, 0 );
尽管你最好使用
row(m, 0) = v;
相关文章:
- 创建一个没有复制构造函数的类的 std::vector 的 std::vector
- 使用赋值运算符复制 std::vector
- 除了 std::vector 之外,是否有一个 std 容器不会复制和销毁作为类的元素?
- 将 Vector<String > 元素复制到其他 Vector<String>* (1 作为
- push_back std::vector,则重复调用复制构造函数
- 如何使用 CUDA 将 std::vector<std::string> 复制到 GPU 设备
- 双重调用传递给 std::vector::emplace_back 的类的复制构造函数
- std::vector 是否有用于引用的复制构造函数?
- 如何将 n 个连续元素插入到元素类型不可复制的 std::vector 中?
- c++17在编译时将带有已删除复制构造函数的类添加到std::vector
- 错误 C2280 / 在 std::vector 中实例化对象时复制构造函数出现问题?
- 如何使 std::vector<T> 使用现有的 T* 数组而不复制这些值?
- 是否有可能在没有复制的情况下传递 std::vector<int> 作为参数来获得 std::vector<std::array<int, 3>>?
- pybind11:如何包装以 std::vector<double> 为参数以避免数据复制的 C++ 函数
- 在线程之间复制 std::vector 而不锁定
- 我如何在std :: vector中生成对象,而无需复制
- 深度复制Vector时,Vector迭代器不兼容
- 复制vector和赋值vector的区别是什么?
- 复制vector并保留vector成员的内存地址
- CudaMemCpy 在复制 vector<cv::P oint3f 时返回 cudaErrorInvalidValue>