C++ STL是什么

2018-11-27  本文已影响25人  Ivan_Lan

STL 组件主要包括容器,迭代器、算法和仿函数。STL 基本结构和 STL 组件对应。

STL 主要由迭代器、算法、容器、仿函数、内存配置器和配接器六部分组成,可帮助程序员完成许多功能完善、形式多样的程序。

STL 组件

STL 是 C++ 标准程序库的核心。STL 内的所有组件都由模板构成,其元素可以是任意型别。
STL 组件主要包括容器,迭代器、算法和仿函数。

容器即用来存储并管理某类对象的集合。例如鱼缸是用来盛放金鱼的容器。

每一种容器都有其优点和缺点。为满足程序的各种需求,STL 准备了多种容器类型,容器可以是 arrays 或是 linked lists,或者每个元素有特别的键值。

迭代器用于在一个对象群集的元素上进行遍历动作。对象群集可能是容器,也可能是容器的一部分。

迭代器的主要用途是为容器提供一组很小的公共接口。利用这个接口,某项操作可以行进至群集内的下一个元素。

每种容器都提供了各自的迭代器。迭代器了解该容器的内部结构,所以能够正确行进。迭代器的接口和一般指针类似。

算法用来处理群集内的元素,可以出于不同目的搜寻、排序、修改、使用那些元素。所有容器的迭代器都提供一致的接口,通过迭代器的协助,算法程序可以用于任意容器。

STL 的一个特性是将数据和操作分离。数据由容器类别加以管理,操作则由可定制的算法定义。迭代器在两者之间充当“粘合剂”,以使算法可以和容器交互运作。

STL 的另一个特性即组件可以针对任意型别运作。“标准模板库”这一名称即表示“可接受任意型别”的模板,并且这些型别均可执行必要操作。

在 STL 中,容器又分为序列式容器和关联式容器两大类,而迭代器的功能主要是遍历容器内全部或部分元素的对象。迭代器可划分为 5 种类属,这 5 种类属归属两种类型:双向迭代器和随机存取迭代器。

SIL 中提供的算法包括搜寻、排序、复制、重新排序、修改、数值运算等。

容器

STL 包含诸多容器类。容器类是可以包含其他对象的类,就像数组和队列堆栈等数据结构包含整数、小数、类等数据成员一样。STL 可以包含常见的向量类、链表类、双向队列类、集合类、图类等,每个类都是一种模板,这些模板可以包含各种类型的对象。

目前,STL 中已经提供的容器主要如下:

容器可以分为序列式容器和关联式容器两大类。序列式容器主要有 vector、list 和 deque;关联式容器包括 set、map、multiset 和 multimap 等容器模板类。

算法

STL 提供了非常多的数据结构算法。这些算法在命名空间 std 的范围内定义,通过包含头文件 <algorithm> 来获得使用权。
常见的部分算法如下:

迭代器

通俗来讲,迭代器就是指示器。迭代器技术能够使程序非常快捷地实现对 STL 容器中内容的反复访问。反复访问意味着一次可以访问一个或多个元素。

迭代器为访问容器提供了通用的方法,类似于 C++ 的指针。当参数化类型是 C++ 内部类型时,迭代器即 C++ 指针。

STL 定义了 5 种类型的指示器,并根据其使用方法予以命名。每种容器都支持某种类别的迭代器。常见的迭代器包括输入、输出、前向、双向和随机接入等类别:

迭代器的诞生使算法和容器分离成为可能。算法是模板,其类型依赖于迭代器,不会局限于单一容器。不同的 STL 算法需要不同类型的迭代器来实现相应的功能。因为不同类型的 STL 容器支持不同类型的迭代器,所以不能对所有容器使用相同的算法。

上一篇 下一篇

猜你喜欢

热点阅读