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

  • 相关阅读:
    exit()和_exit()函数(转)
    C语言struct内存占用问题 (转)
    C语言中memset函数(转)
    STDIN_FILENO与stdin区别(转)
    stderr,strerror,errno,perror,论坛大神的回答!
    C++ 函数模版
    C++ 内置函数
    offsetof
    LockSupportDemo
    读写锁,await和signa
  • 原文地址:https://www.cnblogs.com/crbhf/p/15073023.html
Copyright © 2020-2023  润新知