存储特征数组列表

时间:2016-09-18 17:48:52

标签: c++ c++14 eigen

我想在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 个答案:

答案 0 :(得分:1)

ArrayXfArrayXXdArray3i等都是不同的类型。 因此,您的问题可归结为:是否存在允许异构类型的STL容器?简短的回答是:不。 对此的答案很长:不,但是......

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