存储特征阵列列表
问题描述:
我想将一列特征阵列存储在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容器?简短的回答是:No. 长的答案是:不,但是...
还有其他的选择。正如您所指出的,您可以使用boost::variant
的list
/vector
(明确列出所有类型)或boost::any
(实际允许任何类型)。您也可以在每次使用时使用list
/vector<void*>
和static_cast
(个人,而不是我的首选选项)。
对不起,脑屁。固定。 –
在我的问题中有一个错字,我实际上使用了所有相同的标量类型 – user357269
@ user357269即使使用相同的标量类型,“Array”也是不同的类型。 –