C++ 標準程式庫 (STL) 概觀

所有 C++ 程式庫實體都會在一或多個標準標頭中宣告或定義。 此實作包含另外兩個標頭, <hash_map> 以及 <hash_set> C++ 標準不需要的 。 如需此實作所支援之標頭的完整清單,請參閱 標頭檔參考

C++ 標準會定義兩種符合規範的程式庫:

  • 裝載實 作,可支援 C++ ISO 標準所描述的所有必要標準程式庫標頭。
  • 獨立實 作,只需要標準程式庫標頭的子集。 必要的子集為:
獨立標頭子集
<atomic> (至少 atomic_signed_lock_free 宣告 和 atomic_unsigned_lock_free <cstdint> <ranges>
<bit> <cstdlib> (至少 abort 宣告 、、 atexitat_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」 和 「Standard Template Library」,我們偶爾會使用這些名稱來更輕鬆地尋找我們的檔。 從歷史觀點來看,「STL」最初提到亞歷山大·斯蒂芬諾夫撰寫的標準範本庫。 該程式庫的部分已在 C++ 標準程式庫中標準化,以及 ISO C 執行時間程式庫、Boost 程式庫的一部分,以及其他功能。 有時候,「STL」 也用來參考從 Stepanov 的 STL 改編的 C++ 標準程式庫容器和演算法部分。 在本檔中,標準範本程式庫 (STL) 是指 C++ 標準程式庫整體。

另請參閱

C++ 標準程式庫