为什么C++ STL没有提供任何“树”容器?

为什么C++ STL没有提供任何“树”容器?

C++ STL是什么?

STL(Standard Template Library)是一组C++模板类,提供常见的编程数据结构和函数。它是一个包含容器类、算法、函数和迭代器的库。

它是一种通用的库,因此其组件是参数化的。学习 模板类 是使用STL的先决条件。 STL有4个组件:

  • 算法
  • 容器
  • 函数
  • 迭代器

容器: 容器是处理其他对象或元素的集合的对象,按顺序或按层次结构实现定义良好的数据结构。

例如: vector、set、queue、stack、list、map等。

为什么C++ STL没有提供任何“树”容器?

注意: 查看本文以了解有关STL和容器的更多信息。

为什么STL没有“树”容器:

首先,我们应该看一下需要树的原因:

  • 用户想以层次结构的方式存储数据或
  • 用户希望以特定的顺序获得数据。

对于这两种情况,我们已经有了容器。

set、multisetunordered_set:

  • Set和 multiset 以有序方式存储元素,都是动态容器。Set和multiset内部使用二叉搜索树的概念构建。它以 O(log N) 时间插入和删除数据元素,并不存储重复值。
  • 如果要存储重复值,可以使用multiset。如果不需要任何特定顺序,可以使用unordered_set,在 O(1) 时间内插入和删除数据元素。

基本上,这两个容器的特点是它们实际上必须使用树来实现(虽然这实际上并不是必需的)。

map、multimapunordered_map:

  • 动态容器,如 map,multimap和unordered_map将数据存储为键值对。如果键必须是唯一的,则可以使用map或unordered_map
  • 在multimap中,多个元素可以具有相同的键。键值对可用于存储父/子关系。

这些容器中最大的优点之一是它们是通用类,因此可以进行自定义。unordered_map以 O(1) 的随机顺序存储数据,map和multimap以 O(log N) 时间以有序方式存储数据。

根据我们的需求,可以使用任何这些容器来具有与树相同的特性。

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程