수색…


비고

사용 가능한 많은 내장 프로 시저에는 인수 유형이 공통적으로 있습니다. 예 :

  • 처리 될 입력 배열의 요소를 선택하는 논리 인수 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