我想在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?
答案 0 :(得分:1)
ArrayXf
,ArrayXXd
,Array3i
等都是不同的类型。
因此,您的问题可归结为:是否存在允许异构类型的STL容器?简短的回答是:不。
对此的答案很长:不,但是......
还有其他选择。正如您所指出的,您可以使用list
/ vector
boost::variant
(明确列出所有类型)或boost::any
(实际上允许任何类型)。您还可以在每次使用时使用list
/ vector<void*>
和static_cast
(个人而非我首选的选项)。