8.212 PACK — Упаковка массива в массив ранга один
- Описание:
-
Сохраняет элементы МАССИВ в массив ранга один.
Начало результирующего массива состоит из элементов, у которых МАСКА равна
TRUE. Последующие позиции заполняются элементами, взятыми из ВЕКТОР. - Стандарт:
-
Fortran 90 и более поздние версии
- Класс:
-
Функция преобразования
- Синтаксис:
-
RESULT = PACK(ARRAY, MASK[,VECTOR]) - Аргументы:
-
МАССИВ Должен быть массивом любого типа. МАСКА Должен быть массивом типа LOGICALи иметь тот же размер, что и МАССИВ. В качестве альтернативы, это может бытьLOGICALскаляр.ВЕКТОР (Необязательно) должен быть массивом того же типа, что и МАССИВ, и ранга один. Если присутствует, число элементов в ВЕКТОР должно быть равно или больше числа истинных элементов в МАСКА. Если МАСКА является скалярной, число элементов в ВЕКТОР должно быть равно или больше числу элементов в МАССИВ. - Возвращаемое значение:
-
Результат — массив ранга один и того же типа, что и МАССИВ. Если ВЕКТОР присутствует, размер результата соответствует размеру ВЕКТОР, число
TRUEзначений в МАСКА в противном случае. - Пример:
-
Сбор ненулевых элементов из массива:
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
Сбор ненулевых элементов из массива и добавление элементов из ВЕКТОР:
PROGRAM test_pack_2 INTEGER :: m(4) m = (/ 1, 0, 0, 2 /) ! The following results in "1 2 3 4" WRITE(*, FMT="(4(I0, ' '))") pack(m, m /= 0, (/ 0, 0, 3, 4 /)) END PROGRAM
- См. также:
© Free Software Foundation
Licensed under the GNU Free Documentation License, Version 1.3.
https://gcc.gnu.org/onlinedocs/gcc-13.3.0/gfortran/PACK.html