Map类用于通过C++中普通的连续指针或者数组 (raw C/C++ arrays)来构造Eigen里的Matrix类,这就好比Eigen里的Matrix类的数据和raw C++array 共享了一片地址,也就是引用。

1. 比如有个API只接受普通的C++数组,但又要对普通数组进行线性代数操作,那么用它构造为Map类,直接操作Map就等于操作了原始普通数组,省时省力。
2. 再比如有个庞大的Matrix类,在一个大循环中要不断读取Matrix中的一段连续数据,如果你每次都用block operation 去引用数据,太累(虽然block operation 也是引用类型)。于是就事先将这些数据构造成若干Map,那么以后循环中就直接操作Map就行了。
实际上Map类并没有自己申请一片空内存,只是一个引用,所以需要构造时初始化,或者使用Map的指针。
引申一下,Eigen里 ref 类也是引用类型,Armadillo 里 subview 都是引用类型,
Eigen开发人说的
The use 'sub' as a Matrix or Map. Actually Map, Ref, and Block inherit from the same base class. You can also use Block.
所以说了这么多,就一句话 Map 就是个引用。
 
例如:
Eigen::Map<const Quaterniond> quaterd(parameters[0]);
Eigen::Map<const Eigen::Vector3d> trans(parameters[0] + 4); EIGEN3 在/usr/local/include/eigen3中与/usr/include/eigen3中的可以互换

Eigen中的map的更多相关文章

  1. Eigen库学习---Map类

    Eigen中定义了一系列的vector和matrix,相比copy数据,更一般的方式是复用数据的内存,将它们转变为Eigen类型.Map类很好地实现了这个功能. Map定义 Map(PointerAr ...

  2. 【转】hive优化之--控制hive任务中的map数和reduce数

    一.    控制hive任务中的map数:  1.    通常情况下,作业会通过input的目录产生一个或者多个map任务. 主要的决定因素有: input的文件总个数,input的文件大小,集群设置 ...

  3. Map java中的map 如何修改Map中的对应元素

    Map java中的map 如何修改Map中的对应元素 Map以按键/数值对的形式存储数据,和数组非常相似,在数组中存在的索引,它们本身也是对象.         Map的接口         Map ...

  4. Java中Set Map List 的区别

    java中set map list的区别: 都是集合接口 简要说明 set --其中的值不允许重复,无序的数据结构 list   --其中的值允许重复,因为其为有序的数据结构 map--成对的数据结构 ...

  5. Java中遍历Map集合的四种方法

    在Java中如何遍历Map对象 How to Iterate Over a Map in Java 在java中遍历Map有不少的方法.我们看一下最常用的方法及其优缺点. 既然java中的所有map都 ...

  6. java8中的map和reduce

    java8中的map和reduce 标签: java8函数式mapreduce 2014-06-19 19:14 10330人阅读 评论(4) 收藏 举报  分类: java(47)  FP(2)  ...

  7. zk框架中利用map类型传值来创建window,并且传值

    @Command @NotifyChange("accList") public void clear(@BindingParam("id") String a ...

  8. python 中的map 详解

    python中的map函数应用于每一个可迭代的项,返回的是一个结果list.如果有其他的可迭代参数传进来,map函数则会把每一个参数都以相应的处理函数进行迭代处理.map()函数接收两个参数,一个是函 ...

  9. 由实现JavaScript中的Map想到的

    项目中要用到JavaScript中的Map数据类型,它不像JDK那样有自带的,怎么办?搜了找到一个不错的(http://darkmasky.iteye.com/blog/454749).用这个可以满足 ...

随机推荐

  1. nodejs windows安装

    [安装步骤] 一.安装node.js 1.前往node.js官网下载(我下载的是v10.8.0)并安装工具,这里安装路径选到D盘,e:\Program Files\nodejs 安装完毕在命令行输入以 ...

  2. springboot 缓存

    <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring- ...

  3. Linux查看修改时间、时区

    同步网络时间 yum install ntpntpdate time.nist.gov timedatectl set-timezone Asia/Shanghai如果上面time.nist.gov服 ...

  4. 一:怎样运行python程序

    运行python程序有三种方法: 1,在命令行运行python代码:C:/python27>python hello.py   [注:如果没有把PATH环境变量设置为包含这一路径,要确保输入到了 ...

  5. laravel5.6上传图片及显示

    借鉴大神博客:https://blog.csdn.net/tony_110/article/details/80105099文档:http://laravelacademy.org/post/8965 ...

  6. Jasperreport5.6.9-----2

    Jasperreport5.6.0生成PDF   上一篇讲的是jasperreport5.6.0生成pdf,运行后可以生成pdf,可是和我们的需求有点差距,我们是要求生成后,可以直接打开或保存,这就需 ...

  7. 单例&多线程

    单例模式,最常见的就是饥饿模式,和懒汉模式,一个直接实例化对象,一个在调用方法时进行实例化对象.在多线程模式中,考虑到性能和线程安全问题,我们一般选择下面两种比较经典的单例模式,在性能提高的同时,又保 ...

  8. leetcode输入输出加速

    C++兼容C的输入输出,即cin与scanf混用文件指针不会出错,cout亦同,导致cin有额外开销. 可以用std::ios::sync_with_stdio(false);手动关闭. cin.ti ...

  9. vue 打包

    1.assetsPublicPath路径改为‘./’(两处) 2.cmd运行  cnpm run build 3.生成的dist文件即可本地访问

  10. day 21 封装,多态,类的其他属性

    封装 封装:将一些数据,重要的信息等等放到一个地方(空间中) class A: country = 'China' area = '深圳' def __init__(self,name,age): s ...