Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/algorithm/12.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
C++ 在C+中设置实现+;?_C++_Algorithm_Data Structures_Stl - Fatal编程技术网

C++ 在C+中设置实现+;?

C++ 在C+中设置实现+;?,c++,algorithm,data-structures,stl,C++,Algorithm,Data Structures,Stl,根据下面的链接,C++的STL中的集合通常实现为二进制搜索树,我能够衡量数据类型在诸如整数集、字符集、浮点数集或字符串等情况下的行为,因为在这些情况下,很容易看到对集合元素施加的BST顺序,但考虑到集合的二元搜索树数据结构实现,我无法想象以下数据类型是如何使用二元搜索树实现的: set或set或set或set set set 对于许多其他数据类型,如何为这些类型分配内存以及如何维护顺序 此外,我无法理解以下内容,每当向集合中添加新向量时,集合数据类型是否内部检查集合中的所有向量的相似性或所有映射

根据下面的链接,C++的STL中的集合通常实现为二进制搜索树,我能够衡量数据类型在诸如整数集、字符集、浮点数集或字符串等情况下的行为,因为在这些情况下,很容易看到对集合元素施加的BST顺序,但考虑到集合的二元搜索树数据结构实现,我无法想象以下数据类型是如何使用二元搜索树实现的:

  • 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
    之间的词典比较基本上应用
    运算符