C++ 在C+中设置实现+;?
根据下面的链接,C++的STL中的集合通常实现为二进制搜索树,我能够衡量数据类型在诸如整数集、字符集、浮点数集或字符串等情况下的行为,因为在这些情况下,很容易看到对集合元素施加的BST顺序,但考虑到集合的二元搜索树数据结构实现,我无法想象以下数据类型是如何使用二元搜索树实现的:C++ 在C+中设置实现+;?,c++,algorithm,data-structures,stl,C++,Algorithm,Data Structures,Stl,根据下面的链接,C++的STL中的集合通常实现为二进制搜索树,我能够衡量数据类型在诸如整数集、字符集、浮点数集或字符串等情况下的行为,因为在这些情况下,很容易看到对集合元素施加的BST顺序,但考虑到集合的二元搜索树数据结构实现,我无法想象以下数据类型是如何使用二元搜索树实现的: set或set或set或set set set 对于许多其他数据类型,如何为这些类型分配内存以及如何维护顺序 此外,我无法理解以下内容,每当向集合中添加新向量时,集合数据类型是否内部检查集合中的所有向量的相似性或所有映射
set
或set
或set
或set
set
set
提前感谢:)A
set
无论是什么具体类型的T
都是一样的。在插入时,它通过使用std::less
(默认情况下调用运算符集合使用严格的弱排序来确定每个元素的位置。这在默认情况下使用。这将导致调用运算符内存分配相同(即,不是new int
而是new vector
),并且排序是相同的(使用运算符如果你在一个集合中插入一个向量,那么插入怎么可能是对数时间运算,这有点复杂,我无法理解out@Coder这就是二叉搜索树的全部要点。如果你有一棵平衡树,你可以执行O(log_2(N))比较以找到正确的位置。将其视为对给定值执行正确位置的搜索。实现如何决定在树中的何处插入向量,以及在什么基础上进行什么样的词典比较?@Coder由实现决定从何处开始,但好的猜测将d是中间节点。容器或std::strings
之间的词典比较基本上应用运算符