美文网首页
19 深入理解数组:底层探究

19 深入理解数组:底层探究

作者: 为了自由的白菜 | 来源:发表于2023-03-08 09:36 被阅读0次

深入理解数组:底层实现探究

数组的协议结构

image-20230223225002236.png

Sequence

  • 一个序列(sequence)代表的是一系列具有相同类型的值,你可以对这些值进行迭代
image-20230223225156574.png

IteratorProtocol

  • Sequence通过创建一个迭代器来提供对元素的访问。迭代器每次产生一个序列的值,并且当遍历序列时对遍历状态进行管理
  • 当序列被耗尽时,next()应该返回nil
image-20230223225425579.png

定义自己的Sequence

image-20230223225527781.png

Collection

  • 一个Collection是满足下面条件的Sequence
    • 稳定的Sequence,能够被多次遍历且保持一直
    • 除了线性遍历以外,集合中的元素也可以通过下标索引的方式被获取到
    • 和Sequence不同,Collection类型不能是无限的
image-20230223225916071.png

Array的迭代器

image-20230223225955643.png

Array的下标访问

image-20230223230201634.png

Array的buffer

image-20230223230254677.png

_ContiguousArrayBuffer

image-20230223230337486.png

_ContiguousArrayBuffer的getElement

image-20230223230452680.png

UnsateMutablePointer的下标操作

image-20230223230556548.png

问题:endIndex vs count

image-20230223230716982.png

索引

image-20230223230754798.png image-20230223230928605.png

课后探索

  • 学习removeFirst方法的源码,得出removeFirst的复杂度
  • 学习sort方法的源码,了解Array的排序方法

相关文章

  • 深入理解数组:底层实现探究

    数组的协议结构 序列 -> 集合 -> 可以做区间替换的集合 -> 数组 Sequence 序列 一个序列(Seq...

  • NSRunLoop

    深入理解RunLoop RunLoop深度探究(一) RunLoop深度探究(二) RunLoop深度探究(三) ...

  • 深挖iOS底层-类(4)

    深挖iOS底层-类底层(4) 通过LLDB探究类地址: 经过上述不同打印都可以拿到类的首地址。 继续深入探究首地址...

  • 探究ReactiveCocoa底层之RACSubject设计流程

    直接上今天的干货部分,来深入了解RACSubject的底层实现及设计思想。 一、探究RACSubject底层设计思...

  • golang - slice

    切片定义 切片是基于数组实现的,它的底层是数组,可以理解为对 底层数组的抽象。切片底层结构并没有使用加锁等方式,不...

  • 值得深入探究的底层思维

    1.简洁之道 简洁不是单纯的简单,简洁不是做减法,而是做除法。 2.不可知论 我唯一知道的事情就是我一无所知,所以...

  • HTTPS深入底层探究【高级篇】

    HTTP,HTTPS结构图 HTTPS作用: 1.数字证书防止假冒服务器。2.混合加密:非对称加密防止对称秘钥泄露...

  • HTTP深入底层探究【高级篇】

    1. HTTP各版本的区别 HTTP1.0 特点:默认短链接,明文传输 HTTP1.1 特点: 默认长连接处理过程...

  • Golang之数组和切片

    引用 数组、字符串和切片 Go数组中的索引问题 深入解析 Go 中 Slice 底层实现 Golang 入门 : ...

  • ArrayList和LinkedList的区别、优缺点

    2020-6-19 ArrayList的底层是基于数组实现的,而LinkedList底层是基于双向链表实现的。 一...

网友评论

      本文标题:19 深入理解数组:底层探究

      本文链接:https://www.haomeiwen.com/subject/itanldtx.html