Chciałbym przydzielić tablicy B
do tego samego kształtu i mają takie same dolne i górne granice, jak innej tablicy A
. Na przykład, można użyćPrzydzielanie tablic o tym samym rozmiarze
allocate(B(lbound(A,1):ubound(A,1), lbound(A,2):ubound(A,2), lbound(A,3):ubound(A,3)))
Ale nie tylko to jest nieeleganckie, ale również staje się bardzo irytujące dla tablic (parzysty) wyższych wymiarów.
Miałem nadzieję na coś więcej jak
allocate(B(shape(A)))
który nie działa, a nawet jeśli to nie działa, każdy wymiar rozpocznie się o 1, co jest nie to, co chcę.
Czy ktoś wie, w jaki sposób mogę łatwo przydzielić tablicy mieć taki sam rozmiar i granice, jak innej tablicy łatwo dla dowolnych wymiarów tablicy?
Mogę zapytać, dlaczego trzeba to zrobić. Nie możesz po prostu przydzielić 'B' w tym samym czasie co' A' (lub przynajmniej w tym samym zakresie, kiedy będziesz miał dostęp do parametrów tablicy/kształtu, używanych do alokacji 'A'). Alternatywnie, jeśli przekazujesz 'A' do funkcji lub podprogramu, możesz nie tylko mieć założoną tablicę rozmiarów' B' lokalną dla tej procedury, która przyjmuje kształt 'A'? – Chris
Cóż, chyba nie potrzebuję tego, to po prostu naprawdę nieeleganckie. Tablica 'A' jest przydzielona w innym pliku .f z granicami' A (nlmx-a_offset: nlpx + b_offset, ...) ', zauważysz, że jest to więcej znaków niż użycie l/ubound. – user1173081
Wtedy myślę, że odpowiedź M.S.B. jest prawdopodobnie najlepszym sposobem na zrobienie tego, co próbujesz zrobić. – Chris