0
我的問題更多的是要確認我所得出的結論是否正確,並確定是否有人有任何聰明的「解決方法」。通過列表訪問數組
我的問題始於想要使用maxloc
的朋友提取數組最大值的位置,然後使用此結果讀取其他數組的相應元素。即在僞代碼:
c = b(maxloc(a))
然而,這將返回錯誤
Error: Rank mismatch in array reference at (1) (1/2)
(他正在與(N,N)陣列。)
我做了一些測試,我發現,這確實不起作用。 我的結論是,你需要做這樣的事情:
program h
integer :: a(2,2)
integer :: id(2),id2(2)
a(1,1) = 1; a(1,2) = 2; a(2,1) = 3; a(2,2) = 2
id = maxloc(a)
write(*,*) a(id(1),id(2))
end program h
它的工作原理,大家都高興。那麼,除了我。我想知道是否有更好的方法來做到這一點。有什麼我失蹤?解決問題的簡單方法。
你的方法不會調用'maxloc'兩次嗎? – chw21
哪種方法?關聯?不,它不會。 –
好的,我不太瞭解'associate'是如何工作的,它可能會被優化掉,但如果不是,它會不會爲每個索引單獨調用'maxloc'? – chw21