gpt4 book ai didi

c++ - 通过 vector 下标访问 Fortran 数组,等效于 cpp

转载 作者:搜寻专家 更新时间:2023-10-31 02:02:13 24 4
gpt4 key购买 nike

我想知道是否有一个 cpp 相当于通过存储在其他数组中的索引访问 fortran 中的数组位置

我是 cpp 的新手,但在 oop fortran 方面经验丰富。我正在考虑将 fortran 抛在后面,以便在最近的 cpp 中更好地支持 oop(fortran 中的 oop 可能处于 2000 cpp 的阶段)。

但是,我的应用程序主要面向线性代数。与 cpp 相反,fortran 有很多内置的编译器支持这一点。但我很乐意在 cpp 中加载库以获得详细的 oop 支持。

但是,如果 cpp 中缺少以下构造,那将非常烦人。

由于我还没有找到任何相关的东西,如果有经验的 cpp 程序员可以发表评论,我将不胜感激。

使用级联 vector 下标对 fortan 中的一维数组位置进行赋值可能会很复杂:

iv1(ivcr(val(i,j)))=1

其中 iv1 是一维整数 vector ,ivcr 是一维整数 vector ,val 是二维整数数组,i 和 j 是标量。我想知道我是否可以在 cpp 中以类似的紧凑形式编写它。

一个稍微复杂一点的例子是:

iv1(ivcr(val(i:j,j)))=1

这将用“1”填充 iv1 中的一个部分。

cpp 将如何以最短的方式处理该问题。

最佳答案

给定(适当初始化):

std::vector<int> iv1, ivcr;
std::vector<std::vector<int>> val;

那么你的iv1(ivcr(val(i,j)))=1就是

iv1[ivcr[val[i][j]]] = 1;

至于iv1(ivcr(val(i:j,j)))=1,或者只是val(i:j, j),没有像这样切片成数组的内置方法。为了能够将 1 分配给这些类型的嵌套数据结构访问,您需要提供表达式模板的数据结构。 Eigen 库就是 C++ 的主要线性代数库之一。在此处查看他们的索引和切片文档:

https://eigen.tuxfamily.org/dox-devel/group__TutorialSlicingIndexing.html

关于c++ - 通过 vector 下标访问 Fortran 数组,等效于 cpp,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57697021/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com