您当前的位置: 首页 >  交互

我什么都布吉岛

暂无认证

  • 4浏览

    0关注

    292博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

Eigen库学习(八)Map类与原始类型交互

我什么都布吉岛 发布时间:2021-08-13 12:42:18 ,浏览量:4

这一节主要是解释Eigen是如何与原始的C/C++内存进行交互的,在很多场合是非常有用的,如从外部库输入vector和matrix到Eigen。

一、简介

有时候你可能有一个已经初始化了数组数据,但是你又想用Eigen库的计算功能,你有两种选择,要么拷贝,要么复用。Eigen将提供一个Map类来完成后者。

二、Map类及Map变量定义

Map类模板参数与Matrix前三个一样:

Map

不过默认情况下只需要一个模板参数。为了构造这个Map变量,你需要提供两个信息:

  • 一个指向矩阵系数的参数
  • 矩阵、向量的形状

比如:

Map mf(pf,rows,columns);

这里pf是指向一个float 的数组指针。如果你想使用fixed大小的Map,则应该这么定义:

Map mi(pi);

pi是一个指向int的数组指针。

三、Map变量使用

下面这个例子是展示如何与Matrix进行内存共享。

typedef Matrix MatrixType;
typedef Map MapType;
typedef Map MapTypeConst;   // a read-only map
const int n_dims = 5;
  
MatrixType m1(n_dims), m2(n_dims);
m1.setRandom();
m2.setRandom();
float *p = &m2(0);  // get the address storing the data for m2
MapType m2map(p,m2.size());   // m2map shares data with m2
MapTypeConst m2mapconst(p,m2.size());  // a read-only accessor for m2
 
cout             
关注
打赏
1658157489
查看更多评论
0.0391s