c++ - 存储特征数组列表

标签 c++ c++14 eigen

我想将一组 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/

相关文章:

c++ - 从 Cocos2d::Layer 派生的类有一个指针数据成员。该成员也有 vector 容器。当调用 vector::push_back 时它会崩溃

c++ - 在 decltype() 或 operator noexcept() 上下文中对 nullptr 使用 placement new

c++ - Linux 上的错误 Eigen 库

c++ - 使用 Eigen 插值旋转(slerp)

c++ - 防御性地将 std::move 应用于普通可复制类型是否不可取?

c++ - 典型的 Win32 文件删除 (IDropTarget::Drop) 实现?

c++ - 如何实现对序列对进行操作的 C++ 元函数

c++ - 对齐输出中的小数位?

c++ - Eigen 库得到 "comma initilizer",为什么将 column-major 设置为默认值?

c++ - 外部变量与静态变量的持续时间