9.203 PACK — Упаковка массива в массив ранга один
- Описание:
- Хранит элементы ARRAY в массиве ранга один.
Начало результирующего массива состоит из элементов, чья MASK равна
TRUE. Последующие позиции заполняются элементами из VECTOR. - Стандарт:
- Fortran 95 и более поздние версии
- Класс:
- Трансформационная функция
- Синтаксис:
-
RESULT = PACK(ARRAY, MASK[,VECTOR]) - Аргументы:
-
ARRAY Должен быть массивом любого типа. MASK Должен быть массивом типа LOGICALи того же размера, что и ARRAY. В качестве альтернативы может бытьLOGICALскаляром.VECTOR (Необязательно) должен быть массивом того же типа, что и ARRAY, и ранга один. Если присутствует, число элементов в VECTOR должно быть равно или больше числа истинных элементов в MASK. Если MASK является скаляром, число элементов в VECTOR должно быть равно или больше числа элементов в ARRAY. - Возвращаемое значение:
- Результат — массив ранга один и того же типа, что и ARRAY. Если VECTOR присутствует, размер результата — размер VECTOR, иначе — число
TRUEзначений в MASK. - Пример:
- Сбор элементов, отличных от нуля, из массива:
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
- См. также:
- UNPACK
© Free Software Foundation
Licensed under the GNU Free Documentation License, Version 1.3.
https://gcc.gnu.org/onlinedocs/gcc-5.4.0/gfortran/PACK.html