• Dictionary,hashtable, stl:map有什么异同?


    相同点:字典和map都是泛型,而hashtable不是泛型。

    不同点:三者算法都不相同

    Hashtable,看名字能想到,它是采用传统的哈希算法:探测散列算法,而字典则采用的是散列拉链算法,效率较高,空间也小。Stl:map使用的是红黑树算法,效率最低为o(nlogn)

    这里要注意的是 dictionary使用的是拉链式哈希算法,在算法内部要对KEY进行哈希计算,即 comparer.GetHashCode(object o),就是说在C#中以值类型作KEY时(整形除外)都会发生装箱操作,

    如以enumkey,是C#中造成GC ALLOC的典型原因。

    注意数值类型(int, float, double等)int型作dictionarykey不会有GC ALLOC,这是因为c#有一个对应的重载,如comparer.GetHashCode(int key)的重载。

    而其它类型则没有对应重载,自定义类型当然不会有对应重载了。

  • 相关阅读:
    THUWC2020 游记
    USACO14MAR The Lazy Cow(Gold)
    luogu P3768 简单的数学题
    2017/9/22模拟赛
    2017/9/20模拟赛
    2017/9/15模拟赛
    刷屏代码·稳 from林凯
    2017/9/13模拟赛
    【9018:1368】八数码
    2017/9/10模拟赛
  • 原文地址:https://www.cnblogs.com/timeObjserver/p/9600553.html
Copyright © 2020-2023  润新知