<!--
{
  "documentType" : "article",
  "framework" : "Swift",
  "identifier" : "/documentation/Swift/Substring/UnicodeScalarView/Collection-Implementations",
  "metadataVersion" : "0.1.0",
  "role" : "collectionGroup",
  "title" : "Collection Implementations"
}
-->

# Collection Implementations

## Topics

### Instance Properties

[`var count: Int`](/documentation/Swift/Substring/UnicodeScalarView/count)

The number of elements in the collection.

[`var endIndex: Substring.UnicodeScalarView.Index`](/documentation/Swift/Substring/UnicodeScalarView/endIndex)

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

[`var first: Self.Element?`](/documentation/Swift/Substring/UnicodeScalarView/first)

The first element of the collection.

[`var indices: Substring.UnicodeScalarView.Indices`](/documentation/Swift/Substring/UnicodeScalarView/indices-swift.property)

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

[`var isEmpty: Bool`](/documentation/Swift/Substring/UnicodeScalarView/isEmpty)

A Boolean value indicating whether the collection is empty.

[`var startIndex: Substring.UnicodeScalarView.Index`](/documentation/Swift/Substring/UnicodeScalarView/startIndex)

The position of the first element in a nonempty collection.

[`var underestimatedCount: Int`](/documentation/Swift/Substring/UnicodeScalarView/underestimatedCount)

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

### Instance Methods

[`func distance(from: Substring.UnicodeScalarView.Index, to: Substring.UnicodeScalarView.Index) -> Int`](/documentation/Swift/Substring/UnicodeScalarView/distance(from:to:))

Returns the distance between two indices.

[`func drop(while: (Self.Element) throws -> Bool) rethrows -> Self.SubSequence`](/documentation/Swift/Substring/UnicodeScalarView/drop(while:))

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

[`func dropFirst(Int) -> Self.SubSequence`](/documentation/Swift/Substring/UnicodeScalarView/dropFirst(_:))

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

[`func firstIndex(of: Self.Element) -> Self.Index?`](/documentation/Swift/Substring/UnicodeScalarView/firstIndex(of:))

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

[`func firstIndex(where: (Self.Element) throws -> Bool) rethrows -> Self.Index?`](/documentation/Swift/Substring/UnicodeScalarView/firstIndex(where:))

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

[`func formIndex(inout Self.Index, offsetBy: Int)`](/documentation/Swift/Substring/UnicodeScalarView/formIndex(_:offsetBy:))

Offsets the given index by the specified distance.

[`func formIndex(inout Self.Index, offsetBy: Int, limitedBy: Self.Index) -> Bool`](/documentation/Swift/Substring/UnicodeScalarView/formIndex(_:offsetBy:limitedBy:))

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

[`func formIndex(after: inout Substring.UnicodeScalarView.Index)`](/documentation/Swift/Substring/UnicodeScalarView/formIndex(after:))

Replaces the given index with its successor.

[`func index(Substring.UnicodeScalarView.Index, offsetBy: Int) -> Substring.UnicodeScalarView.Index`](/documentation/Swift/Substring/UnicodeScalarView/index(_:offsetBy:))

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

[`func index(Substring.UnicodeScalarView.Index, offsetBy: Int, limitedBy: Substring.UnicodeScalarView.Index) -> Substring.UnicodeScalarView.Index?`](/documentation/Swift/Substring/UnicodeScalarView/index(_:offsetBy:limitedBy:))

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

[`func index(after: Substring.UnicodeScalarView.Index) -> Substring.UnicodeScalarView.Index`](/documentation/Swift/Substring/UnicodeScalarView/index(after:))

Returns the position immediately after the given index.

[`func index(of: Self.Element) -> Self.Index?`](/documentation/Swift/Substring/UnicodeScalarView/index(of:))

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

[`func indices(of: Self.Element) -> RangeSet<Self.Index>`](/documentation/Swift/Substring/UnicodeScalarView/indices(of:))

Returns the indices of all the elements that are equal to the given
element.

[`func indices(where: (Self.Element) throws -> Bool) rethrows -> RangeSet<Self.Index>`](/documentation/Swift/Substring/UnicodeScalarView/indices(where:))

Returns the indices of all the elements that match the given predicate.

[`func makeIterator() -> IndexingIterator<Self>`](/documentation/Swift/Substring/UnicodeScalarView/makeIterator())

Returns an iterator over the elements of the collection.

[`func map<T, E>((Self.Element) throws(E) -> T) throws(E) -> [T]`](/documentation/Swift/Substring/UnicodeScalarView/map(_:)-3wgri)

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

[`func popFirst() -> Self.Element?`](/documentation/Swift/Substring/UnicodeScalarView/popFirst())

Removes and returns the first element of the collection.

[`func prefix(Int) -> Self.SubSequence`](/documentation/Swift/Substring/UnicodeScalarView/prefix(_:))

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

[`func prefix(through: Self.Index) -> Self.SubSequence`](/documentation/Swift/Substring/UnicodeScalarView/prefix(through:))

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

[`func prefix(upTo: Self.Index) -> Self.SubSequence`](/documentation/Swift/Substring/UnicodeScalarView/prefix(upTo:))

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

[`func prefix(while: (Self.Element) throws -> Bool) rethrows -> Self.SubSequence`](/documentation/Swift/Substring/UnicodeScalarView/prefix(while:))

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

[`func randomElement() -> Self.Element?`](/documentation/Swift/Substring/UnicodeScalarView/randomElement())

Returns a random element of the collection.

[`func randomElement<T>(using: inout T) -> Self.Element?`](/documentation/Swift/Substring/UnicodeScalarView/randomElement(using:))

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

[`func removeFirst() -> Self.Element`](/documentation/Swift/Substring/UnicodeScalarView/removeFirst()-2wary)

Removes and returns the first element of the collection.

[`func removeFirst(Int)`](/documentation/Swift/Substring/UnicodeScalarView/removeFirst(_:)-2iv78)

Removes the specified number of elements from the beginning of the
collection.

[`func removingSubranges(RangeSet<Self.Index>) -> DiscontiguousSlice<Self>`](/documentation/Swift/Substring/UnicodeScalarView/removingSubranges(_:))

Returns a collection of the elements in this collection that are not
represented by the given range set.

[`func split(maxSplits: Int, omittingEmptySubsequences: Bool, whereSeparator: (Self.Element) throws -> Bool) rethrows -> [Self.SubSequence]`](/documentation/Swift/Substring/UnicodeScalarView/split(maxSplits:omittingEmptySubsequences:whereSeparator:))

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

[`func split(separator: Self.Element, maxSplits: Int, omittingEmptySubsequences: Bool) -> [Self.SubSequence]`](/documentation/Swift/Substring/UnicodeScalarView/split(separator:maxSplits:omittingEmptySubsequences:))

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

[`func suffix(from: Self.Index) -> Self.SubSequence`](/documentation/Swift/Substring/UnicodeScalarView/suffix(from:))

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

### Subscripts

[`subscript(Substring.UnicodeScalarView.Index) -> Substring.UnicodeScalarView.Element`](/documentation/Swift/Substring/UnicodeScalarView/subscript(_:)-57h51)

Accesses the element at the specified position.

[`subscript<R>(R) -> Self.SubSequence`](/documentation/Swift/Substring/UnicodeScalarView/subscript(_:)-7ylky)

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

[`subscript(UnboundedRange) -> Self.SubSequence`](/documentation/Swift/Substring/UnicodeScalarView/subscript(_:)-9p7x7)

[`subscript(Range<Substring.UnicodeScalarView.Index>) -> Substring.UnicodeScalarView`](/documentation/Swift/Substring/UnicodeScalarView/subscript(_:)-ua5x)

Accesses a contiguous subrange of the collection’s elements.

[`subscript(RangeSet<Self.Index>) -> DiscontiguousSlice<Self>`](/documentation/Swift/Substring/UnicodeScalarView/subscript(_:)-zsz3)

Accesses a view of this collection with the elements at the given
indices.

### Type Aliases

[`typealias Index`](/documentation/Swift/Substring/UnicodeScalarView/Index)

A type that represents a position in the collection.

[`typealias Indices`](/documentation/Swift/Substring/UnicodeScalarView/Indices-swift.typealias)

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

[`typealias Iterator`](/documentation/Swift/Substring/UnicodeScalarView/Iterator)

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

[`typealias SubSequence`](/documentation/Swift/Substring/UnicodeScalarView/SubSequence)

A collection representing a contiguous subrange of this collection’s
elements. The subsequence shares indices with the original collection.

---

Copyright &copy; 2026 Apple Inc. All rights reserved. | [Terms of Use](https://www.apple.com/legal/internet-services/terms/site.html) | [Privacy Policy](https://www.apple.com/privacy/privacy-policy)