C++中Fortran风格的多维数组

Fortran-style multidimensional arrays in C++

本文关键字:数组 风格 Fortran C++      更新时间:2023-10-16

是否有一个C++库可以提供Fortran风格的多维数组,并支持切片、作为过程参数传递和体面的文档?我研究过闪电战++,但它已经死了!

我强烈建议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;
}

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

如果你想在windows目标上部署,那么要么许可英特尔等效产品(MKL),要么我认为AMD矢量数学库(ACML)是免费的。