extension Collection
extension Collection where Element: Collatable
Возвращает представление этой коллекции с переупорядочением элементов таким образом, чтобы элемент в заданной позиции оказался первым.
Подпоследовательность коллекции до
i
сдвигается после подпоследовательности, начинающейся сi
. В остальном порядок элементов внутри каждого раздела не изменяется.let a = [10, 20, 30, 40, 50, 60, 70] let r = a.rotated(shiftingToStart: 3) // r.elementsEqual([40, 50, 60, 70, 10, 20, 30])
Декларация
func rotated(shiftingToStart i: Index) -> RotatedCollection<Self>
Параметры
i
Позиция в коллекции, которая должна быть первой в результате.
i
должен быть действительным индексом коллекции.Возвращаемое значение
Повернутый вид элементов этой коллекции, при котором элемент
i
находится первым.Декларация
func stablyPartitioned( isSuffixElement p: (Element) -> Bool ) -> [Element]
Возвращает индекс первого элемента коллекции, соответствующего предикату.
Коллекция уже должна быть секционирована в соответствии с предикатом, как если бы
self.partition(by: predicate)
уже был вызван.- Эффективность: не более log(N) вызовов
predicate
, где N — длинаself
. Максимум операций смещения индекса log(N), еслиself
соответствуетRandomAccessCollection
; не более N таких операций в противном случае.
Декларация
func partitionPoint( where predicate: (Element) throws -> Bool ) rethrows -> Index
- Эффективность: не более log(N) вызовов
Возвращает
self.map(transform)
, вычисляемый параллельно на фрагментах self размераminBatchSize
илиminBatchSize + 1
.Требует
transform
безопасно вызывать из нескольких потоков.Декларация
func concurrentMap<B>( minBatchSize: Int = 1, _ transform: (Element) -> B ) -> [B]
Возвращает коллекцию элементов
self
в позициях и порядке, указанных приselection
, без чтения элементов ни одной из коллекций.Сложность
О(1)Декларация
public func sampled<Selection: Collection>(at selection: Selection) -> Sampling<Self, Selection>
Возвращает самые длинные непересекающиеся фрагменты
self
, начиная с первого элемента, с максимальной длинойbatchSize
.Декларация
public func inBatches(of batchSize: Int) -> Slices<Self>
Возвращает
n
ю позицию вself
.Декларация
func index(atOffset n: Int) -> Index
Результат сопоставления элементов
self
.Декларация
public var collated: Element { get }
Возвращает элементы
self
, дополненные до максимальной формы с помощьюpadValue
и сопоставленные.Декларация
public func paddedAndCollated<Scalar: Numeric>( with padValue: Scalar, atStart: Bool = false ) -> Element where Element == Tensor<Scalar>
Параметры
atStart
добавляет отступы в начале, если это
true
, и в конце в противном случае. Значение по умолчаниюfalse
.
extension Collection
extension Collection where Element: Collatable
Возвращает представление этой коллекции с переупорядочением элементов таким образом, чтобы элемент в заданной позиции оказался первым.
Подпоследовательность коллекции до
i
сдвигается после подпоследовательности, начинающейся сi
. В остальном порядок элементов внутри каждого раздела не изменяется.let a = [10, 20, 30, 40, 50, 60, 70] let r = a.rotated(shiftingToStart: 3) // r.elementsEqual([40, 50, 60, 70, 10, 20, 30])
Декларация
func rotated(shiftingToStart i: Index) -> RotatedCollection<Self>
Параметры
i
Позиция в коллекции, которая должна быть первой в результате.
i
должен быть действительным индексом коллекции.Возвращаемое значение
Повернутый вид элементов этой коллекции, при котором элемент
i
находится первым.Декларация
func stablyPartitioned( isSuffixElement p: (Element) -> Bool ) -> [Element]
Возвращает индекс первого элемента коллекции, соответствующего предикату.
Коллекция уже должна быть секционирована в соответствии с предикатом, как если бы
self.partition(by: predicate)
уже был вызван.- Эффективность: не более log(N) вызовов
predicate
, где N — длинаself
. Максимум операций смещения индекса log(N), еслиself
соответствуетRandomAccessCollection
; не более N таких операций в противном случае.
Декларация
func partitionPoint( where predicate: (Element) throws -> Bool ) rethrows -> Index
- Эффективность: не более log(N) вызовов
Возвращает
self.map(transform)
, вычисляемый параллельно на фрагментах self размераminBatchSize
илиminBatchSize + 1
.Требует
transform
безопасно вызывать из нескольких потоков.Декларация
func concurrentMap<B>( minBatchSize: Int = 1, _ transform: (Element) -> B ) -> [B]
Возвращает коллекцию элементов
self
в позициях и порядке, указанных приselection
, без чтения элементов ни одной из коллекций.Сложность
О(1)Декларация
public func sampled<Selection: Collection>(at selection: Selection) -> Sampling<Self, Selection>
Возвращает самые длинные непересекающиеся фрагменты
self
, начиная с первого элемента, с максимальной длинойbatchSize
.Декларация
public func inBatches(of batchSize: Int) -> Slices<Self>
Возвращает
n
ю позицию вself
.Декларация
func index(atOffset n: Int) -> Index
Результат сопоставления элементов
self
.Декларация
public var collated: Element { get }
Возвращает элементы
self
, дополненные до максимальной формы с помощьюpadValue
и сопоставленные.Декларация
public func paddedAndCollated<Scalar: Numeric>( with padValue: Scalar, atStart: Bool = false ) -> Element where Element == Tensor<Scalar>
Параметры
atStart
добавляет отступы в начале, если это
true
, и в конце в противном случае. Значение по умолчаниюfalse
.