我想翻译一些现有的 Matlab 代码,这些代码很自然地使用了很多多维数组,我想知道有哪些可能的选择。我希望容器具有复制构造函数、默认构造函数,如果可能的话,在编译时清除错误消息,通过 A[i][j]
访问而且一般不会麻烦。最好,他们应该使用 std::move
操作速度。
据我所知,选项归结为:
std::vector
迭代。它确实有效,但写std::vector<std::vector<std::vector<double> > >
似乎很愚蠢对于 3D 数组。我还担心速度和内存方面的开销。boost::multiarray和 blitz::Array提供大部分功能,但在运行时复制构造函数(请参阅 stackoverflow)失败。我不清楚这是否有正当理由。
Eigen library 看起来很快但是它根本不允许复制,并且没有默认构造函数,这意味着必须使用另一个容器。
std::array
缺点是创建对象时必须知道大小,因此没有默认构造函数。
是否有一个更简单的多维容器满足所有请求但比迭代更 Thrift std::vector
?
最佳答案
关于C++ 多维数组的可能性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26909186/