如何检查Fortran数组是否包含值?

How to check if Fortran array contains value?

提问人:AncientSwordRage 提问时间:12/1/2011 最后编辑:Vladimir F Героям славаAncientSwordRage 更新时间:3/16/2018 访问量:31991

问:

我已经看到其他语言要求这样做,但是刚刚发现 Fortran 可以很好地处理数组,我认为可能有一种简单的方法可以在没有循环的情况下做到这一点。

目前,我正在搜索一个 3D 数组,查看“最近邻”,看看它们是否包含字母“n”,每当它找到这个值时,我都希望它执行一些 clusterLabel 赋值(这与这个问题无关)

我想使用,但由于显而易见的原因,它不喜欢根据值检查数组。它也不喜欢我使用 ,即使我希望它一次检查一个元素。 不起作用,因为我在 where 循环中有一个 case 语句并且出现错误if(lastNeighArray.eq."n") then...<rest of code>lastNeighArray(:)where(lastNeighArray.eq."n")WHERE statements and constructs must not be nested.

所以我有点卡住了。我真正想要的是类似的东西,但那不存在。when(lastNeighArray.eq."n")

我也看过,但它们似乎不是正确的选择。anyforall

数组 if 语句 fortran where-clause fortran90

评论

5赞 1/8/2014
奇怪的是,你看了任何但不喜欢它。
1赞 AncientSwordRage 1/8/2014
@Svetlana我认为当时我没有充分考虑过。有了两年的经验,我认为我不会轻易解雇它。

答:

52赞 Vladimir F Героям слава 12/1/2011 #1

实际上,任何都应该是正确的选择

if ( ANY( lastNeighArray=="n" ) ) then

如果您希望整个数组包含该值,则还有 ALL。