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)。

  • 相关阅读:
    Web 前端开发中一些兼容性问题及其解决办法 (持续更)
    沈逸的IT专栏---shenyisyn
    程序员该做的事
    职场需要切忌的几点——《程序员,你伤不起》
    百度天气API接口
    C#简单音乐播放器ListBox歌单列表
    CentOS7 安装java(jre 1.8)
    CentOS7 系统安装与设置
    这个可以有,记录下
    在centos 7中让网卡自启动
  • 原文地址:https://www.cnblogs.com/crbhf/p/15073023.html
Copyright © 2011-2022 走看看