zoukankan      html  css  js  c++  java
  • 36、set和map的区别,multimap和multiset的区别

    set只提供一种数据类型的接口,但是会将这一个元素分配到key和value上,而且它的compare_function用 的是 identity()函数,这个函数是输入什么输出什么,这样就实现了set机制,set的key和value其实是一样 的了。其实他保存的是两份元素,而不是只保存一份元素

    map则提供两种数据类型的接口,分别放在key和value的位置上,他的比较function采用的是红黑树的 comparefunction(),保存的确实是两份元素。

    他们两个的insert都是采用红黑树的insert_unique() 独一无二的插入 。

    multimap和map的唯一区别就是:multimap调用的是红黑树的insert_equal(),可以重复插入而map调用的则 是独一无二的插入insert_unique(),multiset和set也一样,底层实现都是一样的,只是在插入的时候调用 的方法不一样。

    红黑树概念

    面试时候现场写红黑树代码的概率几乎为0,但是红黑树一些基本概念还是需要掌握的。

    1、它是二叉排序树(继承二叉排序树特显):

    a. 若左子树不空,则左子树上所有结点的值均小于或等于它的根结点的值。

    b. 若右子树不空,则右子树上所有结点的值均大于或等于它的根结点的值。

    c. 左、右子树也分别为二叉排序树。

    2、它满足如下几点要求:

    a. 树中所有节点非红即黑。

    b. 根节点必为黑节点。

    c. 红节点的子节点必为黑(黑节点子节点可为黑)。

    d. 从根到NULL的任何路径上黑结点数相同。

    3、查找时间一定可以控制在O(logn)。

  • 相关阅读:
    增值业务
    话题:jQuery 关于文件上传表单处理的一个非常怪异的问题
    net use 的使用
    c#开发snmp应用
    PowerDesigner15使用时的十五个问题
    一段JS代码,让你的WordPress支持简繁转换(转)
    聚集索引查询优化
    NHibernate 2.1.2相关地址
    Oracle expdp/impdp导出导入命令及数据库备份(转)
    大型ORACLE数据库优化设计方案
  • 原文地址:https://www.cnblogs.com/crbhf/p/15073023.html
Copyright © 2011-2022 走看看