深入理解数组:底层实现探究
数组的协议结构
Sequence
- 一个序列(sequence)代表的是一系列具有相同类型的值,你可以对这些值进行迭代
IteratorProtocol
- Sequence通过创建一个迭代器来提供对元素的访问。迭代器每次产生一个序列的值,并且当遍历序列时对遍历状态进行管理
- 当序列被耗尽时,next()应该返回nil
定义自己的Sequence
Collection
- 一个Collection是满足下面条件的Sequence
- 稳定的Sequence,能够被多次遍历且保持一直
- 除了线性遍历以外,集合中的元素也可以通过下标索引的方式被获取到
- 和Sequence不同,Collection类型不能是无限的
Array的迭代器
Array的下标访问
Array的buffer
_ContiguousArrayBuffer
_ContiguousArrayBuffer的getElement
UnsateMutablePointer的下标操作
问题:endIndex vs count
索引
课后探索
- 学习removeFirst方法的源码,得出removeFirst的复杂度
- 学习sort方法的源码,了解Array的排序方法