在使用Eigen的时候,如果STL容器中的元素是Eigen数据库结构,比如下面用vector容器存储Eigen::Matrix4f类型或用map存储Eigen::Vector4f数据类型时:

vector<Eigen::Matrix4d>;

std::map<int, Eigen::Vector4f>

编译能通过,当运行时会报段错误。

对eigen中的固定大小的类使用STL容器的时候,如果直接使用会出错,所谓固定大小(fixed-size)的类是指在编译过程中就已经分配好内存空间的类,为了提高运算速度,对于SSE或者AltiVec指令集,向量化必须要求向量是以16字节即128bit对齐的方式分配内存空间,所以针对这个问题,容器需要使用eigen自己定义的内存分配器,即aligned_allocator。

使用aligned_alloctor分配器,上面的例子正确写法为:

std::vector<Eigen::Matrix4d,Eigen::aligned_allocator<Eigen::Matrix4d>>

std::map<int, Eigen::Vector4f, Eigen::aligned_allocator<std::pair<const int, Eigen::Vector4f>>

上述的这段代码才是标准的定义容器方法,只是我们一般情况下定义容器的元素都是C++中的类型,所以可以省略,这是因为在C++11标准中,aligned_allocator管理C++中的各种数据类型的内存方法是一样的,可以不需要着重写出来。但是在Eigen管理内存和C++11中的方法是不一样的,所以需要单独强调元素的内存分配和管理。

Eigen aligned_allocator相关推荐

  1. Eigen::aligned_allocator

    如果STL容器中的元素是Eigen库数据结构,例如这里定义一个vector容器,元素是Matrix4d ,如下所示: vector<Eigen::Matrix4d> 这个错误也是和上述一样 ...

  2. Eigen内存分配器aligned_allocator

    在使用Eigen的时候,如果STL容器中的元素是Eigen数据库结构,比如下面用vector容器存储Eigen::Matrix4f类型或用map存储Eigen::Vector4f数据类型时: vect ...

  3. Eigen向量化内存对齐/Eigen的SSE兼容,内存分配/EIGEN_MAKE_ALIGNED_OPERATOR_NEW

    1.总结 对于基本数据类型和自定义类型,我们需要用预编译指令来保证栈内存的对齐,用重写operator new的方式保证堆内存对齐.对于嵌套的自定义类型,申请栈内存时会自动保证其内部数据类型的对齐,而 ...

  4. Eigen有哪些需要注意的操作

    Eigen有哪些需要注意的操作 Eigen有哪些需要注意的操作 1. Eigen有哪些行操作,列操作,块操作,怎样写会更高效? 2. ColMajor和RowMajor是什么?Eigen默认的是哪种? ...

  5. aligned_allocator

    如果STL容器中的元素是Eigen库数据结构,例如这里定义一个vector容器,元素是Matrix4d ,如下所示: vector<Eigen::Matrix4d>; 这个错误也是和上述一 ...

  6. 【Eigen】【Eigen实践】【Eigen的使用学习记录】

    [Eigen][Eigen实践][Eigen的使用学习记录] 0 前言 1 Eigen使用 1.1 头文件的使用 1.2 定义和初始化 1.2.1 定义n*m矩阵 1.2.2 定义n*1向量 1.2. ...

  7. Eigen 内存对齐

    https://eigen.tuxfamily.org/dox/group__TopicStlContainers.html 这个上面已经说的很清楚了,如果使用现代c++特性,对齐问题无需考虑 htt ...

  8. Eigen GO Ceres

    1.Eigen 1)Eigen只用到头文件,所以要确保编译器的搜索路径里包含头文件的路径,/usr/local/include/ /usr/include/eigen3/ 2)定义一个矩阵或向量有两种 ...

  9. 【Eigen】基本和常用函数

    文章目录 简介 找不到头文件 Eigen 中矩阵的定义 Eigen 中矩阵的使用方法 Eigen 中常用矩阵生成 Eigen 中矩阵分块 Eigen 中矩阵元素交换 Eigen 中矩阵转置 Eigen ...

最新文章

  1. String 字符串对象
  2. AI打AI,人脸对抗攻击公开课第四讲预告:对抗防御介绍
  3. Python PyCharm利用PyQt5使QPlainTextEdit支持拖放文件,类提升,重写QPlainTextEdit类
  4. 迅雷精简版-纪念走过的时光
  5. 应用Composite模式
  6. 微信公众号推送模板信息
  7. 用神经网络实现手写数字识别
  8. 信息系统集成监理费收取标准_信息系统工程监理与咨询服务收费参考标准起草说明...
  9. 如何用计算机克数和斤换算,质量(重量)单位换算计算器
  10. 改进YOLOv5!GSConv+Slim Neck进一步提升YOLOv5性能!
  11. 东南大学计算机考研面试题,东南大学复试常问问题今天的模拟面试总结
  12. arm-linux-objdump -D -m arm led_elf led.dis 是什么意思?
  13. 从《我不是潘金莲》谈程序员的核心竞争力
  14. 左神算法:如何较为直观地打印二叉树(Java版)
  15. SIGGRAPH Asia 2022 | 港中文MMLab:Marker Correspondence估计框架和应用
  16. 【荐书】C程序设计语言(第二版)
  17. 微信二维码识别、微信数据分析
  18. html mailto 不起作用,HTML Mailto 使用手记
  19. OpenCV-Python 调节摄像头分辨率及窗口位置大小
  20. socket读写返回值的处理

热门文章

  1. 实习生也容易上手的ui框架
  2. 回归中的相关度和决定系数
  3. ſ xf(sinx)dx 中的f(sinx)到底是什么
  4. 姜小白的python日记Day4 列表和元组
  5. 站内信系统数据库设计
  6. 区分gym中的gym.make()函数与gym.vector.make()函数
  7. matlab模拟塞曼图谱,塞曼效应理论与实验分析.doc
  8. 浅谈sklearn中DBSCAN的欧式距离(Euclidean Distance)的计算
  9. 【JPress】Template
  10. 怎么格式化云服务器,云服务器磁盘怎么格式化