Eigen::aligned_allocator

阳光天气發表於2024-08-21

如果STL容器中的元素是Eigen庫資料結構,例如這裡定義一個vector容器,元素是Matrix4d,如下所示:
vector<Eigen::Matrix4d>
這個錯誤也是和上述一樣的提示,編譯不會出錯,只是在執行的時候出錯,只有在執行的時候出錯,
解決的方法很簡單,定義改成下面的方式:
vector<Eigen::Matrix4d,Eigen::aligned_allocator<Eigen::Matrix4d>>;
其實上述的這段程式碼才是標準的定義容器方法,只是我們一般情況下定義容器的元素都是C++中的型別,
所以可以省略,這是因為在C++11標準中,aligned_allocator管理C++中的各種資料型別的記憶體方法是一樣的,
可以不需要著重寫出來。但是在Eigen管理記憶體和C++11的方法是不一樣的,所以需要單獨強調元素的記憶體分配和管理。