我想将一组 Eigen 数组存储在 std::list
中或 std::vector
.
我的数组有不同的类型,一些 Array<Scalar, 1, Dynamic>
, 一些 Array<Scalar, Dynamic, Dynamic>
, 所以我不确定要给 std::list
什么模板参数.
想法:
- 将所有内容转换到
Dynamic
并存储为std::list<Array<Scalar, Dynamic, Dynamic>>
, 但这感觉像是不必要的复制 -
boost::variant
?
对于不太熟悉 Eigen 的人,Dynamic
表示 -1
.
有关更多上下文,请参见此处:What's the right type for a join_rows() function?
最佳答案
ArrayXf
, ArrayXXd
, Array3i
等都是不同的类型。
因此,您的问题归结为:是否存在允许异构类型的 STL 容器?对此的简短回答是:不。
对此的长答案是:不,但是......
还有其他选择。正如您所指出的,您可以使用 list
/vector
的 boost::variant
(明确列出所有类型)或 boost::any
(有效地允许任何类型)。你也可以使用 list
/vector<void*>
和 static_cast
在每次使用时(就个人而言,不是我的首选选项)。
关于c++ - 存储特征数组列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39560812/