【问题标题】:Fortran-style multidimensional arrays in C++C++ 中的 Fortran 风格多维数组
【发布时间】:2012-03-13 01:44:42
【问题描述】:

是否有 C++ 库提供 Fortran 风格的多维数组,支持切片、作为过程参数传递和体面的文档?我调查过blitz++,但它已经死了!

【问题讨论】:

  • 看看Boost.MultiArray。那里似乎有facilities 提供您所描述的内容。不过我从来没有用过,所以我不能确定。
  • 似乎,除了支持数组切片外,它几乎与我的描述兼容,我只是想知道我可以将我的 std :: aray 转换为一维案例所需的这个数组。
  • 切片支持,通过视图。
  • @Xeo 是的,但这看起来有点奇怪!

标签: c++ multidimensional-array fortran


【解决方案1】:

我强烈建议Armadillo

Armadillo 是一个 C++ 线性代数库(矩阵数学),旨在实现速度和易用性之间的良好平衡

它是一个 C++ 模板库:

采用延迟评估方法(在编译时)将多个操作组合为一个并减少(或消除)对临时对象的需求;这是通过模板元编程自动完成的

网页中的一个简单示例:

#include <iostream>
#include <armadillo>

int main(int argc, char** argv)
{
    arma::mat A = arma::randu<arma::mat>(4,5);
    arma::mat B = arma::randu<arma::mat>(4,5);

    std::cout << A*B.t() << std::endl;

    return 0;
}

【讨论】:

    【解决方案2】:

    如果您运行的是 OSX,则可以免费使用 vDSP 库。

    如果您想在 Windows 目标上进行部署,那么要么授权英特尔等价物 (MKL),要么我认为 AMD 向量数学库 (ACML) 是免费的。

    【讨论】:

    • 我很感激,但我的要求与类似 fortran 的多数组略有不同,而不是线性代数包。我用的是 Linux,LAPACK、ATLAS 和 BLAS 已经预打包(netlib 版本)
    • 啊,对不起。我很久以前玩过 Blitz++。现在除了缺乏发展还有什么问题?狩猎愉快,一切顺利。
    猜你喜欢
    • 2016-11-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-07
    • 1970-01-01
    • 2016-11-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多