Fortran
본질적인 절차
수색…
비고
사용 가능한 많은 내장 프로 시저에는 인수 유형이 공통적으로 있습니다. 예 :
- 처리 될 입력 배열의 요소를 선택하는 논리 인수
MASK
- 함수 결과의
KIND
를 결정하는 정수 스칼라 인수KIND
- 축소가 수행되는 차원을 제어하는 축소 함수에 대한 정수 인수
DIM
팩을 사용하여 조건을 충족하는 요소 선택
intrinsic pack
함수는 배열을 벡터로 pack
하여 주어진 마스크를 기반으로 요소를 선택합니다. 이 함수에는 두 가지 형식이 있습니다.
PACK(array, mask)
PACK(array, mask, vector)
(즉, vector
인수는 선택 사항입니다).
두 경우 모두 array
는 배열이고 논리적 유형의 mask
이며 array
(스칼라 또는 같은 모양의 배열)에 부합합니다.
첫 번째 경우에, 결과의 종류와 유형 파라미터 등급 1 배열 array
마스크의 진정한 요소 수 인 원소의 수.
integer, allocatable :: positive_values(:)
integer :: values(5) = [2, -1, 3, -2, 5]
positive_values = PACK(values, values>0)
positive_values
는 배열 [2, 3, 5]
됩니다.
vector
rank-1 인수가 제시되면 결과는 vector
의 크기가됩니다 (적어도 mask
true 값보다 많은 요소가 있어야합니다).
효과와 vector
의 마스크 요소에 의해 덮어 그 배열의 초기 요소를 그 배열을 반환하는 array
. 예를 들어
integer, allocatable :: positive_values(:)
integer :: values(5) = [2, -1, 3, -2, 5]
positive_values = PACK(values, values>0, [10,20,30,40,50])
positive_values
는 배열 [2,3,5,40,50]
됩니다.
인수 array
의 모양에 관계없이 결과는 항상 순위 1 배열입니다.
마스킹 조건을 충족하는 배열 요소를 선택하는 것 외에도 마스킹 조건이 충족되는 지표를 결정하는 것이 유용한 경우가 많습니다. 이 공통 관용구는 다음과 같이 표현 될 수있다.
integer, allocatable :: indices(:)
integer i
indices = PACK([(i, i=1,5)], [2, -1, 3, -2, 5]>0)
indices
는 배열 [1,3,5]
됩니다.
Modified text is an extract of the original Stack Overflow Documentation
아래 라이선스 CC BY-SA 3.0
와 제휴하지 않음 Stack Overflow