2016-09-18 75 views
0

我想将一列特征阵列存储在std::liststd::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?

回答

1

ArrayXfArrayXXdArray3i等都是不同的类型。 因此,你的问题归结为:是否有一个允许异构类型的STL容器?简短的回答是:No. 长的答案是:不,但是...

还有其他的选择。正如您所指出的,您可以使用boost::variantlist/vector(明确列出所有类型)或boost::any(实际允许任何类型)。您也可以在每次使用时使用list/vector<void*>static_cast(个人,而不是我的首选选项)。

+1

对不起,脑屁。固定。 –

+0

在我的问题中有一个错字,我实际上使用了所有相同的标量类型 – user357269

+0

@ user357269即使使用相同的标量类型,“Array”也是不同的类型。 –