“STL” 和 “C++ 标准库” 之间有什么区别?


标准模板库 (STL) 是 C++ 编程语言的一个软件库,它影响了 C++ 标准库的许多部分。它提供了四个组件,称为算法、容器、函数和迭代器。请注意,术语“STL”或“标准模板库”在 ISO 14882 C++ 标准中任何地方都没有出现。因此,将 C++ 标准库称为 STL 是错误的,即 STL 和 C++ 标准库是两件不同的事情,前者是后者的子集。

STL 包括

容器

STL 包含序列容器和关联容器。容器是存储数据的对象。标准序列容器包括 vector、deque 和 list。标准关联容器包括 set、multiset、map、multimap、hash_set、hash_map、hash_multiset 和 hash_multimap。还有容器适配器 queue、priority_queue 和 stack,它们是具有特定接口的容器,使用其他容器作为实现。

迭代器

迭代器是一个对象,它使程序员能够遍历容器。STL 实现五种不同类型的迭代器:输入(用于读取一系列值)、输出(用于写入一系列值)、前向(可以读取、写入和向前移动)、双向(像前向迭代器,但也可以向后移动)和随机访问(在一个操作中自由移动任意步数)。迭代器是 STL 通用性的主要特征。

算法

STL 中的算法是专门设计用于在元素范围内使用的函数集合。范围是可以通过迭代器或指针访问的任何对象序列,例如数组或一些 STL 容器的实例。STL 中算法的示例:sort(对范围内的元素进行排序)、binary_search(测试某个值是否存在于排序序列中)、min_element(返回范围内的最小元素)等。请注意,所有这些算法都可以应用于作为模板接受的任何数据类型。

在 C++ 编程语言中,C++ 标准库是类和函数的集合,这些类和函数是用核心语言编写的,并且是 C++ ISO 标准本身的一部分。C++ 标准库提供了一些通用容器、用于利用和操作这些容器的函数、函数对象、通用字符串和流(包括交互式和文件 I/O)、对某些语言特性的支持以及用于日常任务的函数,例如查找数字的平方根。以下是 C++ 标准库的一些特性:

这些库用于处理 C++ 中可用的不同类型的流。例如,一个流通常表示文件流,并且此类可用于创建文件、将信息写入文件以及从文件读取信息,一个流表示字符串流,并且通常用于操作字符串等。

容器

这是一个类集合,用于以各种数据类型(如向量、集合、映射、栈、队列等)存储数据。这些是 STL 的一个组件。

通用库

诸如算法、Chrono 用于时间、迭代器、内存等的库。

数值库

此库是 C++ 程序可用于执行半数值运算的组件集合。例如, <complex> 定义了一个类模板,以及用于表示和操作复数的众多函数,<random> 用于生成(伪)随机数等。

线程

这是在 C++11 中引入的库,它基本上处理并发性。

C 标准库

C 标准库中的每个头文件都在 C++ 标准库中以不同的名称包含,该名称通过删除 .h 并以 'c' 开头生成;例如,'time.h' 变成 'ctime'。

更新于:2020 年 6 月 24 日

2K+ 浏览量

开启您的 职业生涯

通过完成课程获得认证

开始学习
广告