我想翻译一些现有的Matlab代码,这些代码很自然地使用了很多多维数组,我想知道可能的选项是什么.我希望容器具有复制构造函数,默认构造函数,如果可能的话,在编译时清除错误消息,通过A [i] [j]进行访问,并且通常不会很麻烦.最好,他们应该使用std :: move操作来提高速度.
据我所知,选项归结为:
> std :: vector迭代.它肯定有效,但写std :: vector< std :: vector< std :: vector< double>似乎很愚蠢. > >用于3D阵列.我也关注速度和内存的开销.
> boost::multiarray和blitz::Array提供了大部分功能,但在运行时在复制构造函数(参见stackoverflow)中失败.我不清楚是否有正当理由.
> Eigen库似乎非常快,但根本不允许复制,并且没有默认构造函数,这意味着必须使用另一个容器.
> std :: array的缺点是在创建对象时必须知道大小,因此没有默认的构造函数.
是否有一个更简单的多维容器满足所有请求,但比迭代的std :: vector更节俭?
最佳答案 有一个很好的线性代数包称为Armadillo
用它与R,快乐的用户