C++ 标准库 (STL) 概述

所有 C++ 库实体都在在一个或多个标准标头中声明或定义。 此实现包括 C++ 标准版不需要的两个额外标头:<hash_map><hash_set>。 有关此实现支持的标头的完整列表,请参阅头文件参考

C++ 标准版定义两种类型的符合标准的库:

  • 托管实现,它支持 C++ ISO 标准所描述的所有必需的标准库标头
  • 独立实现,它仅需要标准库标头的一个子集。 所需的子集为:
独立标头子集
<atomic>(至少声明 atomic_signed_lock_freeatomic_unsigned_lock_free <cstdint> <ranges>
<bit> <cstdlib>(至少声明 abortatexitat_quick_exitexitquick_exit <ratio>
<cfloat> <exception> <tuple>
<climits> <functional> <typeinfo>
<compare> <initializer_list> <source_location>
<concepts> <iterator> <type_traits>
<coroutine> <limits> <utility>
<cstdarg> <memory> <version>
<cstddef> <new>

自 C++11 起,已弃用以下标头:<ciso646><cstdalign><cstdbool>

独立实现和托管实现之间的其他差异包括:

  • 托管实现需要一个名为 main 的全局函数。 独立实现可以定义其自己的启动和终止函数。
  • 托管实现必须支持同时运行多个线程。 独立实现的实现器决定其库是否支持并发线程。

Microsoft C++ 标准库同时满足独立和托管要求。

C++ 库标头有两个更广泛的细分:

本节包含以下部分:

有关 Visual C++ 运行时库的详细信息,请参阅 CRT 库功能

注意

Microsoft 对 C++ 标准库的实现通常称为 STL 或标准模板库。 尽管 C++ 标准库是 ISO 14882 中定义的库的正式名称,但由于搜索引擎中常用“STL”和“标准模板库”,因此我们偶尔使用这些名称,以便更轻松地查找文档。 根据历史记录,“STL”最初是指 Alexander Stepanov 编写的标准模板库。 该库的一部分与 ISO C 运行时库、Boost 库的一部分和其他功能一起在 C++ 标准库中进行了标准化。 有时,“STL”还用于表示根据 Stepanov 的 STL 改编的 C++ 标准库的容器和算法部分。 在本文档中,标准模板库 (STL) 是指整个 C++ 标准库。

另请参阅

C++ 标准库