Vorrei allocare un array B
con la stessa forma e avere gli stessi limiti inferiore e superiore di un altro array A
. Ad esempio, ho potuto utilizzareAssegnazione di matrici della stessa dimensione
allocate(B(lbound(A,1):ubound(A,1), lbound(A,2):ubound(A,2), lbound(A,3):ubound(A,3)))
Ma non solo questo è poco elegante, diventa anche molto fastidioso per array (anche) dimensioni superiori.
speravo in qualcosa di più simile
allocate(B(shape(A)))
che non funziona, e anche se questo ha funzionato, ogni dimensione sarebbe iniziare a 1, che non è quello che voglio.
Qualcuno sa come posso facilmente allocare un array per avere le stesse dimensioni e limiti di un altro array facilmente per dimensioni di array arbitrarie?
Posso chiedere perché è necessario fare questo. Non puoi semplicemente allocare 'B' nello stesso momento di' A' (o almeno nello stesso ambito, quando avrai accesso ai parametri della matrice/limiti usati per allocare 'A'). In alternativa, se si passa 'A' a una funzione o subroutine non si può semplicemente avere una matrice di dimensioni presunte' B' locale a quella routine che assume la forma di 'A'? – Chris
Beh, suppongo di non aver bisogno di questo, è davvero poco elegante. L'array 'A' è allocato in un diverso file .f con i limiti' A (nlmx-a_offset: nlpx + b_offset, ...) ', noterete che si tratta di più caratteri rispetto all'utilizzo di l/ubound. – user1173081
Quindi penso che la risposta di M.S.B. sia probabilmente il modo migliore per fare ciò che stai cercando di fare. – Chris