Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/124.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++ STL设置了什么样的树实现?_C++_Data Structures_Tree - Fatal编程技术网

C++ STL设置了什么样的树实现?

C++ STL设置了什么样的树实现?,c++,data-structures,tree,C++,Data Structures,Tree,我知道在STL中,矢量表示动态数组的实现。因此,列表表示链表(双链表)的实现。我知道set有一个类似于tree的实现。从前面提到的算法复杂度来看,集合中的大多数内置函数的复杂度为o(1)或o(logn)。那么这棵树是作为平衡树还是任何其他类型的树(如红黑树)实现的,如果是,为什么选择这样的树结构?该标准对实现没有任何限制(除了复杂性保证) 换句话说,它依赖于实现。通常,它是一棵红黑树(例如,请参见/usr/include/c++/x.y.z/bits/stl_tree.h,其中x.y.z是您特定

我知道在STL中,矢量表示动态数组的实现。因此,
列表
表示链表(双链表)的实现。我知道
set
有一个类似于tree的实现。从前面提到的算法复杂度来看,集合中的大多数内置函数的复杂度为o(1)或o(logn)。那么这棵树是作为平衡树还是任何其他类型的树(如红黑树)实现的,如果是,为什么选择这样的树结构?

该标准对实现没有任何限制(除了复杂性保证)


换句话说,它依赖于实现。通常,它是一棵红黑树(例如,请参见
/usr/include/c++/x.y.z/bits/stl_tree.h
,其中
x.y.z
是您特定的GCC版本)。

我使用的是std::set并在其中插入值。我这样做并不是为了使任何特定于一种树的东西我的集合应该是二进制的、红黑的还是平衡的。那么,它是否真的依赖于实现?@ RITES:我不确定你的观点是什么,但是,它确实是依赖于实现的。“实现依赖”在C++标准的上下文中意味着编译器/库供应商决定如何实现它。它与您如何使用代码@Ritesh编写库无关。@如果用户不提供任何实现,它通常是红黑相间的。这就是你的意思吗?@Ritesh,每一个编写STL版本的人可能会有不同的做法。这就是依赖于实现的含义。大多数都是红黑二叉树。你真的是指STL吗?还是通常被误认为是STL“C++标准库”?