Spec-Zone.ru › GNU Fortran 11

9.213 PACK — Упаковка массива в массив ранга один

Описание:

Сохраняет элементы ARRAY в массив ранга один.

Начало результирующего массива состоит из элементов, у которых MASK равно TRUE. Затем позиции заполняются элементами, взятыми из VECTOR.

Стандарт:

Fortran 90 и более поздние версии

Класс:

Трансформационная функция

Синтаксис:

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 /)
  ! The following results in "1 2 3 4"
  WRITE(*, FMT="(4(I0, ' '))") pack(m, m /= 0, (/ 0, 0, 3, 4 /))
END PROGRAM
См. также:

UNPACK

Далее: PARITY, Предыдущий: OR, Вверх: Встроенные процедуры [Содержание][Индекс]

© Free Software Foundation
Licensed under the GNU Free Documentation License, Version 1.3.
https://gcc.gnu.org/onlinedocs/gcc-11.1.0/gfortran/PACK.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API