Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/cmake/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为什么不是';t std::set刚才叫std::binary_树? STD::在C++中,在数据结构方面,不是一个真实的集合。std::unordered_集是一个实数集,但std::set是一个二叉搜索树,更具体地说是一个红黑树。那么,为什么它被称为std::set呢?是否有一些特定的功能将std::set与二叉树区分开来?谢谢_C++_Data Structures_Set_Binary Tree_Binary Search Tree - Fatal编程技术网

为什么不是';t std::set刚才叫std::binary_树? STD::在C++中,在数据结构方面,不是一个真实的集合。std::unordered_集是一个实数集,但std::set是一个二叉搜索树,更具体地说是一个红黑树。那么,为什么它被称为std::set呢?是否有一些特定的功能将std::set与二叉树区分开来?谢谢

为什么不是';t std::set刚才叫std::binary_树? STD::在C++中,在数据结构方面,不是一个真实的集合。std::unordered_集是一个实数集,但std::set是一个二叉搜索树,更具体地说是一个红黑树。那么,为什么它被称为std::set呢?是否有一些特定的功能将std::set与二叉树区分开来?谢谢,c++,data-structures,set,binary-tree,binary-search-tree,C++,Data Structures,Set,Binary Tree,Binary Search Tree,为什么std::set不叫做std::binary_树 因为 树没有描述如何使用接口。是的 std::set未提供足够的操作,无法用作通用搜索树。它仅为搜索树的特定应用程序提供接口:集合的表示 从技术上讲,该标准没有规定std::set是一个二进制搜索树;尽管红黑BST可能是唯一能够实现对std::set施加的要求的数据结构,并且在指定接口时已仔细考虑了该数据结构,但内部数据结构的选择是一个实现细节 出于同样的原因,std::unordered\u set不会调用std::hash\u表 无序集

为什么std::set不叫做std::binary_树

因为

  • 树没有描述如何使用接口。是的
  • std::set
    未提供足够的操作,无法用作通用搜索树。它仅为搜索树的特定应用程序提供接口:集合的表示
  • 从技术上讲,该标准没有规定
    std::set
    是一个二进制搜索树;尽管红黑BST可能是唯一能够实现对
    std::set
    施加的要求的数据结构,并且在指定接口时已仔细考虑了该数据结构,但内部数据结构的选择是一个实现细节
  • 出于同样的原因,
    std::unordered\u set
    不会调用
    std::hash\u表
  • 无序集是一个实数集,但它是一个二叉搜索树

    std::unordered_集
    std::set
    的“真实”程度不同。它们都是要求和保证略有不同的套件;一个设计为可使用树实现,另一个设计为可使用哈希表实现


    p.S.树和哈希表不是表示集合的唯一方法。可以实现大部分(但不是全部)std::set的一个内部数据结构是排序向量。特别是对于小集合,排序向量可以比std::set快得多,因为它的元素应该排序。它被称为set,因为它是一个集合;)。我真的不明白为什么你认为没有。它可以实现为一个二进制搜索树,但不一定。它是关于你使用的接口,而不是它是如何实现的implemented@vahancho在二进制搜索中也是如此tree@user463035818这是最合理的解释,,虽然我更想知道std::set和二叉搜索树之间是否有一些基本的区别。另外,我很好奇为什么他们不能把界面直接扔到BST上,因为他们都有道理,谢谢。因此,如果我理解正确,这可以归结为标准,没有指定实现必须是红黑树,并且接口仅限于有序集。