【发布时间】:2020-01-01 22:53:35
【问题描述】:
我想知道是否有一个 cpp 相当于通过存储在其他数组中的索引访问 fortran 中的数组位置
我是 cpp 新手,但在 oop fortran 方面经验丰富。我正在考虑将 fortran 抛在后面,以便在最近的 cpp 中更好地支持 oop(fortran 中的 oop 可能处于 2000 年 cpp 的阶段)。
但是,我的应用程序主要面向线性代数。与 cpp 相反,fortran 有很多内置的编译器支持这一点。但我很乐意在 cpp 中加载库以获得详细的 oop 支持。
但是如果 cpp 中缺少以下构造,那将非常烦人。
由于我还没有找到任何相关内容,如果有经验的 cpp 程序员可以发表评论,我将不胜感激。
使用级联向量下标在 fortan 中分配一维数组位置可能很复杂,如下所示:
iv1(ivcr(val(i,j)))=1
其中 iv1 是一维整数向量,ivcr 是一维整数向量,val 是二维整数数组,i 和 j 是标量。我想知道我是否可以在 cpp 中以类似的紧凑形式编写它。
一个稍微复杂一点的例子是:
iv1(ivcr(val(i:j,j)))=1
这将用“1”填充iv1中的一个部分。
cpp 将如何以尽可能最短的方式处理该问题。
【问题讨论】:
-
std::vector和std::fill()怎么样? -
如果你想要 C++ 的线性代数,我推荐
Eigen。它是一个只提供头文件的库,提供类似于 Matlab 的接口。它具有您正在寻找的索引切片符号。 -
std::valarray和std::indirect_array应该在这里提及。
标签: c++ arrays vector subscript