美文网首页
OC 上的集合 & STL

OC 上的集合 & STL

作者: helinyu | 来源:发表于2022-02-24 20:39 被阅读0次

    iOS中的集合和STL 中的集合有什么不一样的地方?

    NSSet/NSMutiSet
    无序
    不可重复
    底层应该是使用了NSHashTable来实现的。 (hash 算法)

    查看BSSet 的API

    NSHashTable 和NSMapTable对应的集合关系
    参考 NSDictionary和NSMaptable, NSArray,NSSet,NSOrderedSet和NSHashTable 区别

    NSMutableOrderedSet/NSOrderedSet 作用
    保持了NSSet的元素不可重复和 NSArray的索引有序。


    STL 上的Set/mutiSet 和hash_set 以及hash_mutiset

    Set 相当于NSOrderSet的一半部分咯。
    1)所有元素都会根据元素的键值自动被排序,

    1. set的键值就是实值,set 不允许两个元素是相同的。
    2. 具有集合的基本操作: 交、并、减、合等基本操作。。
    3. 底层基于RB-tree 来实现的。

    MutiSet
    和set基本相同,唯一区别:允许键值重复。

    hash_set:
    底层调用了 RB-tree 或者hashTable ,Note:hashTable没有排序,RB-tree 是有排序的。
    使用上和hash_set 完全是一样的。


    Map/mutimap & hashMap/hash_mutimap

    map 上是使用RB-tree , 所以是有序的

    hash_map 底层就是使用了hashTable 的方式,


    unorder_map 这个是无需的map,底层基于hashTable


    PS : 底层个无非两种, 一种是RB-tree有序, 一种是HashTable是无序的。

    相关文章

      网友评论

          本文标题:OC 上的集合 & STL

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