Eigen的aligned_allocator
2024-09-05 21:37:06
今天看ORBSLAM2中的OptimizeEssentialGraph()函数时,对一句代码中的aligned_allocator不太清楚:
vector<g2o::Sim3,Eigen::aligned_allocator<g2o::Sim3> >
百度查找了一些资料,记录如下:
如果STL容器中的元素是Eigen的数据结构,例如这里定义一个vector容器,元素是Matrix4d ,如下所示:
vector <Eigen::Matrix4d>;
编译不会出错,但在运行的时候出错。解决的方法很简单,定义改成下面的方式:
vector<Eigen::Matrix4d,Eigen::aligned_allocator<Eigen::Matrix4d>>;
其实上述的这段代码才是标准的定义容器方法,只是我们一般情况下定义容器的元素都是C++中的类型,所以可以省略,这是因为在C++11标准中,aligned_allocator管理C++中的各种数据类型的内存方法是一样的,可以不需要着重写出来。但是在Eigen管理内存和C++11中的方法是不一样的,所以需要单独强调元素的内存分配和管理。
最新文章
- [Cordova] Plugin开发入门
- offsetleft、offsetTop、offsetParent的兼容性问题
- netty概念
- Entity Framework学习笔记(四)----Linq查询(1)
- html5 标签
- time_t转换为DateTime
- jquery判断对象是否获得焦点
- Warning File `.depend&#39; has modification time 1.6 s in the future
- yarn资源调度(网络搜集)
- mysql数据库主从备份
- 用CSS实现响应式布局
- JavaScript入门(三)
- hashtable 简单介绍
- 把一个syn报文给rst掉
- 团队项目Alpha冲刺阶段之学习总结
- 如何使用向量代表文档doc或者句子sentence
- 树莓派挂载ntfs优盘
- 奇葩字符 ";a๎๎๎๎๎๎๎๎๎๎๎๎๎๎๎๎๎๎๎"; 的简单分析
- c++ list set 方法集合
- python3【基础】-装饰器