为什么不是';t std::set刚才叫std::binary_树? STD::在C++中,在数据结构方面,不是一个真实的集合。std::unordered_集是一个实数集,但std::set是一个二叉搜索树,更具体地说是一个红黑树。那么,为什么它被称为std::set呢?是否有一些特定的功能将std::set与二叉树区分开来?谢谢
为什么std::set不叫做std::binary_树 因为为什么不是';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::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上,因为他们都有道理,谢谢。因此,如果我理解正确,这可以归结为标准,没有指定实现必须是红黑树,并且接口仅限于有序集。