Generic Structure

ReversedCollection

A collection that presents the elements of its base collection in reverse order.

Declaration

@frozen struct ReversedCollection<Base> where Base : BidirectionalCollection

Overview

The reversed() method is always lazy when applied to a collection with bidirectional indices, but does not implicitly confer laziness on algorithms applied to its result. In other words, for ordinary collections c having bidirectional indices:

  • c.reversed() does not create new storage

  • c.reversed().map(f) maps eagerly and returns a new array

  • c.lazy.reversed().map(f) maps lazily and returns a LazyMapCollection

Topics

Type Aliases

typealias ReversedCollection.Element

A type that represents a valid position in the collection.

typealias ReversedCollection.Elements

A Sequence that can contain the same elements as this one, possibly with a simpler type.

typealias ReversedCollection.Indices

A type that represents the indices that are valid for subscripting the collection, in ascending order.

typealias ReversedCollection.SubSequence

A sequence that represents a contiguous subrange of the collection’s elements.

Instance Properties

var count: Int

The number of elements in the collection.

var endIndex: ReversedCollection<Base>.Index

The collection’s “past the end” position—that is, the position one greater than the last valid subscript argument.

var first: Base.Element?

The first element of the collection.

var indices: DefaultIndices<ReversedCollection<Base>>

The indices that are valid for subscripting the collection, in ascending order.

var isEmpty: Bool

A Boolean value indicating whether the collection is empty.

var last: Base.Element?

The last element of the collection.

var startIndex: ReversedCollection<Base>.Index

The position of the first element in a nonempty collection.

var underestimatedCount: Int

A value less than or equal to the number of elements in the collection.

Instance Methods

func allSatisfy((Base.Element) -> Bool) -> Bool

Returns a Boolean value indicating whether every element of a sequence satisfies a given predicate.

func compactMap<ElementOfResult>((Base.Element) -> ElementOfResult?) -> [ElementOfResult]

Returns an array containing the non-nil results of calling the given transformation with each element of this sequence.

func contains(Base.Element) -> Bool

Returns a Boolean value indicating whether the sequence contains the given element.

func contains(where: (Base.Element) -> Bool) -> Bool

Returns a Boolean value indicating whether the sequence contains an element that satisfies the given predicate.

func difference<C>(from: C) -> CollectionDifference<Base.Element>

Returns the difference needed to produce this collection’s ordered elements from the given collection.

func difference<C>(from: C, by: (C.Element, Base.Element) -> Bool) -> CollectionDifference<Base.Element>

Returns the difference needed to produce this collection’s ordered elements from the given collection, using the given predicate as an equivalence test.

func drop(while: (Base.Element) -> Bool) -> Slice<ReversedCollection<Base>>

Returns a subsequence by skipping elements while predicate returns true and returning the remaining elements.

func dropFirst(Int) -> Slice<ReversedCollection<Base>>

Returns a subsequence containing all but the given number of initial elements.

func dropLast(Int) -> Slice<ReversedCollection<Base>>

Returns a subsequence containing all but the specified number of final elements.

func elementsEqual<OtherSequence>(OtherSequence) -> Bool

Returns a Boolean value indicating whether this sequence and another sequence contain the same elements in the same order.

func elementsEqual<OtherSequence>(OtherSequence, by: (Base.Element, OtherSequence.Element) -> Bool) -> Bool

Returns a Boolean value indicating whether this sequence and another sequence contain equivalent elements in the same order, using the given predicate as the equivalence test.

func enumerated() -> EnumeratedSequence<ReversedCollection<Base>>

Returns a sequence of pairs (n, x), where n represents a consecutive integer starting at zero and x represents an element of the sequence.

func filter((Base.Element) -> Bool) -> [Base.Element]

Returns an array containing, in order, the elements of the sequence that satisfy the given predicate.

func first(where: (Base.Element) -> Bool) -> Base.Element?

Returns the first element of the sequence that satisfies the given predicate.

func firstIndex(of: Base.Element) -> Index?

Returns the first index where the specified value appears in the collection.

func firstIndex(where: (Base.Element) -> Bool) -> Index?

Returns the first index in which an element of the collection satisfies the given predicate.

func flatMap<SegmentOfResult>((Base.Element) -> SegmentOfResult) -> [SegmentOfResult.Element]

Returns an array containing the concatenated results of calling the given transformation with each element of this sequence.

func forEach((Base.Element) -> Void)

Calls the given closure on each element in the sequence in the same order as a for-in loop.

func formIndex(inout Index, offsetBy: Int)

Offsets the given index by the specified distance.

func formIndex(inout Index, offsetBy: Int, limitedBy: Index) -> Bool

Offsets the given index by the specified distance, or so that it equals the given limiting index.

func formIndex(after: inout Index)

Replaces the given index with its successor.

func formIndex(before: inout Index)

Replaces the given index with its predecessor.

func index(ReversedCollection<Base>.Index, offsetBy: Int) -> ReversedCollection<Base>.Index

Returns an index that is the specified distance from the given index.

func index(ReversedCollection<Base>.Index, offsetBy: Int, limitedBy: ReversedCollection<Base>.Index) -> ReversedCollection<Base>.Index?

Returns an index that is the specified distance from the given index, unless that distance is beyond a given limiting index.

func index(before: ReversedCollection<Base>.Index) -> ReversedCollection<Base>.Index

Returns the position immediately before the given index.

func index(of: Base.Element) -> Index?

Returns the first index where the specified value appears in the collection.

Deprecated
func index(where: (Base.Element) -> Bool) -> Index?

Returns the first index in which an element of the collection satisfies the given predicate.

Deprecated
func joined() -> FlattenSequence<ReversedCollection<Base>>

Returns the elements of this sequence of sequences, concatenated.

func joined<Separator>(separator: Separator) -> JoinedSequence<ReversedCollection<Base>>

Returns the concatenated elements of this sequence of sequences, inserting the given separator between each element.

func joined(separator: String) -> String

Returns a new string by concatenating the elements of the sequence, adding the given separator between each element.

func joined(separator: String) -> String

Returns a new string by concatenating the elements of the sequence, adding the given separator between each element.

func last(where: (Base.Element) -> Bool) -> Base.Element?

Returns the last element of the sequence that satisfies the given predicate.

func lastIndex(of: Base.Element) -> Index?

Returns the last index where the specified value appears in the collection.

func lastIndex(where: (Base.Element) -> Bool) -> Index?

Returns the index of the last element in the collection that matches the given predicate.

func lexicographicallyPrecedes<OtherSequence>(OtherSequence) -> Bool

Returns a Boolean value indicating whether the sequence precedes another sequence in a lexicographical (dictionary) ordering, using the less-than operator (<) to compare elements.

func lexicographicallyPrecedes<OtherSequence>(OtherSequence, by: (Base.Element, Base.Element) -> Bool) -> Bool

Returns a Boolean value indicating whether the sequence precedes another sequence in a lexicographical (dictionary) ordering, using the given predicate to compare elements.

func makeIterator() -> ReversedCollection<Base>.Iterator

Returns an iterator over the elements of this sequence.

func map<U>((Base.Element) -> U) -> LazyMapSequence<ReversedCollection<Base>, U>

Returns a LazyMapSequence over this Sequence. The elements of the result are computed lazily, each time they are read, by calling transform function on a base element.

func map<T>((Base.Element) -> T) -> [T]

Returns an array containing the results of mapping the given closure over the sequence’s elements.

func max() -> Base.Element?

Returns the maximum element in the sequence.

func max(by: (Base.Element, Base.Element) -> Bool) -> Base.Element?

Returns the maximum element in the sequence, using the given predicate as the comparison between elements.

func min() -> Base.Element?

Returns the minimum element in the sequence.

func min(by: (Base.Element, Base.Element) -> Bool) -> Base.Element?

Returns the minimum element in the sequence, using the given predicate as the comparison between elements.

func prefix(Int) -> Slice<ReversedCollection<Base>>

Returns a subsequence, up to the specified maximum length, containing the initial elements of the collection.

func prefix(through: Index) -> Slice<ReversedCollection<Base>>

Returns a subsequence from the start of the collection through the specified position.

func prefix(upTo: Index) -> Slice<ReversedCollection<Base>>

Returns a subsequence from the start of the collection up to, but not including, the specified position.

func prefix(while: (Base.Element) -> Bool) -> Slice<ReversedCollection<Base>>

Returns a subsequence containing the initial elements until predicate returns false and skipping the remaining elements.

func randomElement() -> Base.Element?

Returns a random element of the collection.

func randomElement<T>(using: inout T) -> Base.Element?

Returns a random element of the collection, using the given generator as a source for randomness.

func reduce<Result>(Result, (Result, Base.Element) -> Result) -> Result

Returns the result of combining the elements of the sequence using the given closure.

func reduce<Result>(into: Result, (inout Result, Base.Element) -> ()) -> Result

Returns the result of combining the elements of the sequence using the given closure.

func reversed() -> Base

Reversing a reversed collection returns the original collection.

func shuffled() -> [Base.Element]

Returns the elements of the sequence, shuffled.

func shuffled<T>(using: inout T) -> [Base.Element]

Returns the elements of the sequence, shuffled using the given generator as a source for randomness.

func sorted() -> [Base.Element]

Returns the elements of the sequence, sorted.

func sorted(by: (Base.Element, Base.Element) -> Bool) -> [Base.Element]

Returns the elements of the sequence, sorted using the given predicate as the comparison between elements.

func split(maxSplits: Int, omittingEmptySubsequences: Bool, whereSeparator: (Base.Element) -> Bool) -> [Slice<ReversedCollection<Base>>]

Returns the longest possible subsequences of the collection, in order, that don’t contain elements satisfying the given predicate.

func split(separator: Base.Element, maxSplits: Int, omittingEmptySubsequences: Bool) -> [Slice<ReversedCollection<Base>>]

Returns the longest possible subsequences of the collection, in order, around elements equal to the given element.

func split(separator: Base.Element, maxSplits: Int, omittingEmptySubsequences: Bool) -> [ArraySlice<Base.Element>]

Returns the longest possible subsequences of the sequence, in order, around elements equal to the given element.

func starts<PossiblePrefix>(with: PossiblePrefix) -> Bool

Returns a Boolean value indicating whether the initial elements of the sequence are the same as the elements in another sequence.

func starts<PossiblePrefix>(with: PossiblePrefix, by: (Base.Element, PossiblePrefix.Element) -> Bool) -> Bool

Returns a Boolean value indicating whether the initial elements of the sequence are equivalent to the elements in another sequence, using the given predicate as the equivalence test.

func suffix(Int) -> Slice<ReversedCollection<Base>>

Returns a subsequence, up to the given maximum length, containing the final elements of the collection.

func suffix(from: Index) -> Slice<ReversedCollection<Base>>

Returns a subsequence from the specified position to the end of the collection.

func withContiguousStorageIfAvailable<R>((UnsafeBufferPointer<Base.Element>) -> R) -> R?

Call body(p), where p is a pointer to the collection’s contiguous storage. If no such storage exists, it is first created. If the collection does not support an internal representation in a form of contiguous storage, body is not called and nil is returned.

Subscripts

subscript<R>(R) -> Slice<ReversedCollection<Base>>

Accesses the contiguous subrange of the collection’s elements specified by a range expression.

subscript(Range<Index>) -> Slice<ReversedCollection<Base>>

Accesses a contiguous subrange of the collection’s elements.

Structures

struct ReversedCollection.Index

An index that traverses the same positions as an underlying index, with inverted traversal direction.

struct ReversedCollection.Iterator

A type that provides the sequence’s iteration interface and encapsulates its iteration state.

Relationships

Conforms To

See Also

Wrappers for Algorithms

struct CollectionDifference

A collection of insertions and removals that describe the difference between two ordered collection states.

struct DropFirstSequence

A sequence that lazily consumes and drops n elements from an underlying Base iterator before possibly returning the first available element.

struct DropWhileSequence

A sequence that lazily consumes and drops n elements from an underlying Base iterator before possibly returning the first available element.

struct EnumeratedSequence

An enumeration of the elements of a sequence or collection.

struct FlattenSequence

A sequence consisting of all the elements contained in each segment contained in some Base sequence.

struct JoinedSequence

A sequence that presents the elements of a base sequence of sequences concatenated using a given separator.

struct PrefixSequence

A sequence that only consumes up to n elements from an underlying Base iterator.

struct Repeated

A collection whose elements are all identical.

struct StrideTo

A sequence of values formed by striding over a half-open interval.

struct StrideThrough

A sequence of values formed by striding over a closed interval.

struct UnfoldSequence

A sequence whose elements are produced via repeated applications of a closure to some mutable state.

struct Zip2Sequence

A sequence of pairs built out of two underlying sequences.