21 Set的定义和创建

2023-03-11  本文已影响0人  为了自由的白菜

Set的定义和创建

Set的概念

集合的三个特性

Swift里面的集合

创建Set

image-20230224220454067.png

Set类型的哈希值

image-20230224220800751.png image-20230224220855076.png

访问和修改

Set的遍历

image-20230224221325862.png

访问Set

image-20230224221523899.png

添加元素

image-20230224221651276.png

移除元素

image-20230224222318610.png image-20230224222525522.png image-20230224222658228.png

执行Set计算和判断

基本Set操作

image-20230224223206220.png

基本Set操作的定义

image-20230225145708014.png

Set判断方法

image-20230225150247261.png

实现自己的集合算法

image-20230225151748975.png
//上方的方法名定义应为
func getSubsetsOfSet<T>(_ set: Set<T>) -> Array<Set<T>> {}

//上面方法的限制, set.count如果超出64位
//则就超出所以平台限制
image-20230225203020179.png
//上面方法名修正
func getSubsets2<T>(_ set: Set<T>) -> Array<Set<T>> {}

func getSubsets3<T>(_ elements: Array<T>, index: Int, count: Int) -> Array<Set<T>>{}

练习

底层实现探究

从Set的insert说起

image-20230225211247027.png

_NativeSet的find方法

image-20230225211421478.png

HashTable

image-20230225211512680.png image-20230225211638405.png

线性探测的开放寻址法

image-20230225211826112.png

_NativeSet的insertNew

image-20230225212027885.png

HashTable的insertNew

image-20230225212110912.png

_NativeSet的uncheckedInitialize

image-20230225212216063.png
上一篇 下一篇

猜你喜欢

热点阅读