8.189 PACK — Pack an array into an array of rank one
- Description:
- Stores the elements of ARRAY in an array of rank one.
The beginning of the resulting array is made up of elements whose MASK equals
TRUE. Afterwards, positions are filled with elements taken from VECTOR. - Standard:
- Fortran 95 and later
- Class:
- Transformational function
- Syntax:
-
RESULT = PACK(ARRAY, MASK[,VECTOR]) - Arguments:
-
ARRAY Должен быть массивом любого типа. MASK Должен быть массивом типа LOGICALи того же размера, что и ARRAY. В качестве альтернативы может быть скалярнымLOGICAL.VECTOR (Необязательно) должен быть массивом того же типа, что и ARRAY, и ранга один. Если указан, количество элементов в VECTOR должно быть равно или больше количества истинных элементов в MASK. Если MASK является скалярным, количество элементов в VECTOR должно быть равно или больше количеству элементов в ARRAY. - Return value:
- Результат — массив ранга один и того же типа, что и ARRAY. Если VECTOR присутствует, размер результата — размер VECTOR, иначе — количество
TRUEзначений в MASK. - Example:
- Сбор элементов, отличных от нуля, из массива:
PROGRAM test_pack_1 INTEGER :: m(6) m = (/ 1, 0, 0, 0, 5, 0 /) WRITE(*, FMT="(6(I0, ' '))") pack(m, m /= 0) ! "1 5" END PROGRAM
Сбор элементов, отличных от нуля, из массива и добавление элементов из VECTOR:
PROGRAM test_pack_2 INTEGER :: m(4) m = (/ 1, 0, 0, 2 /) WRITE(*, FMT="(4(I0, ' '))") pack(m, m /= 0, (/ 0, 0, 3, 4 /)) ! "1 2 3 4" END PROGRAM
- See also:
- UNPACK
© Free Software Foundation
Licensed under the GNU Free Documentation License, Version 1.3.
https://gcc.gnu.org/onlinedocs/gcc-4.9.3/gfortran/PACK.html