Eigen库和STL容器冲突问题

Posted flyinggod

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Eigen库和STL容器冲突问题相关的知识,希望对你有一定的参考价值。

博客参考:https://blog.csdn.net/huajun998/article/details/54311561

在程序中想使用类似于如下的容器

std::vector<Eigne::vector4f> centroids;

编译不通过,主要是访问centriods的时候,程序直接访问内存错误。原因是Eigen库使用了SSE加速,需要按照128位对齐,这导致了fixed-size vectorizable Eigen object必须16字对齐,例如Eigen库重载了new操作,然而有些情况这写对齐设置被覆盖了,造成了上述断言错误。

解决方式

#include<Eigen/StdVector>
std::vector<Eigen::vector4f,Eigen::aligned_allocator<Eigen::vector4f> >

按照以上方式申请容器即可解决

 

以上是关于Eigen库和STL容器冲突问题的主要内容,如果未能解决你的问题,请参考以下文章

Visual Studio 2017 发行版中的 Eigen cwisemin/cwisemax 访问冲突

特征不对齐断言

STL容器自定义内存分配器

STL容器自定义内存分配器

STL容器自定义内存分配器

如何为特征矩阵创建 STL 输出迭代器?