数组的协议结构:
Sequence 序列 -> Collection 集合 -> RangeReplaceableCollection 可以做区间替换的集合 -> Array 数组
一个序列 (Sequence) 代表的是一系列具有相同类型的值,你可以对这些值进行迭代
- Sequence 通过创建一个迭代器来提供对元素的访问。迭代器每次产生一个序列的值,并且当遍历序列时对遍历状态进行管理。
- 当序列被耗尽时,next()应该返回nil
一个 Collection 是满足下面条件的 Sequence
- 稳定的Sequence,能够被多次遍历并且保持一致
- 除了线性遍历外,集合中的元素也可以通过下标索引的方式被获取到
- 和 Sequence 不同,Collection 类型不能是无限的
Array 的迭代器
Array 的下标访问
Array 的buffer
_ContiguousArrayBuffer
_ContiguousArrayBuffer 的 getElement
UnsafeMutablePointer 的下标操作
question: endIndex vs count
endIndex 是 self.Index 类型,即它不一定是整形;而count 是 Int 类型。Apple 推进时间复杂度较优的 endIndex 方法。