A collection that supports backward as well as forward traversal.
SDK
- Xcode 8.0+
Framework
- Swift Standard Library
Declaration
protocol BidirectionalCollection where Self.Indices : BidirectionalCollection , Self.SubSequence : BidirectionalCollection
Overview
Bidirectional collections offer traversal backward from any valid index, not including a collection’s start. Bidirectional collections can therefore offer additional operations, such as a last property that provides efficient access to the last element and a reversed() method that presents the elements in reverse order. In addition, bidirectional collections have more efficient implementations of some sequence and collection methods, such as suffix(_:).
Conforming to the BidirectionalCollection Protocol
To add Bidirectional conformance to your custom types, implement the index(before:) method in addition to the requirements of the Collection protocol.
Indices that are moved forward and backward in a bidirectional collection move by the same amount in each direction. That is, for any index i into a bidirectional collection c:
If
i >= c,.start Index && i < c .end Index c..index(before: c .index(after: i)) == i If
i > c.start Index && i <= c .end Index c..index(after: c .index(before: i)) == i