C++ 標準函式庫標頭檔
C++ 標準函式庫的介面是由以下標頭檔集合所定義的。
多用途標頭檔 | ||
| 通用用途公用程式:程式控制、動態記憶體配置、隨機數、排序與搜尋 | ||
| (C++17) |
為演算法的平行版本預定義的執行策略以及執行控制元件(自 C++26 起) | |
語言支援函式庫 | ||
| 浮點類型的極限 | ||
| 整數類型的極限 | ||
| (C++20) |
三向比較運算子支援 | |
| (C++26) |
合約 (Contracts) 支援函式庫 | |
| (C++20) |
協程 (Coroutine) 支援函式庫 | |
| 儲存(並跳轉到)執行上下文的巨集(與函式) | ||
| 用於訊號管理的函式與巨集常數 | ||
| 處理可變長度引數列表 | ||
| 標準巨集與類型定義 (typedefs) | ||
| (C++11) |
固定寬度整數類型與其他類型的極限 | |
| 例外處理公用程式 | ||
| (C++11) |
std::initializer_list 類別範本 | |
| 查詢算術類型的屬性 | ||
| 低階記憶體管理公用程式 | ||
| (C++20) |
提供獲取原始碼位置的方法 | |
| (C++23) |
固定寬度浮點類型 | |
| (C++11) |
std::type_index | |
| 執行期類型資訊公用程式 | ||
| (C++20) |
提供用於驗證函式庫實作狀態的巨集 | |
概念 (Concepts) 函式庫 | ||
| (C++20) |
基本函式庫概念 | |
診斷函式庫 | ||
| 將其引數與零進行比較的條件編譯巨集 | ||
| 包含最後一個錯誤代碼的巨集 | ||
| (C++26) |
偵錯函式庫 | |
| (C++23) |
堆疊追蹤 (Stacktrace) 函式庫 | |
| 標準例外類型 | ||
| (C++11) |
定義 std::error_code,一種平台相關的錯誤碼 | |
記憶體管理函式庫 | ||
| 高階記憶體管理公用程式 | ||
| (C++17) |
多型配置器與記憶體資源 | |
| (C++11) |
巢狀配置器類別 | |
元程式設計 (Metaprogramming) 函式庫 | ||
| (C++11) |
編譯期有理數算術 | |
| (C++11) |
編譯期類型資訊公用程式 | |
通用公用程式函式庫 | ||
| (C++17) |
std::any 類別 | |
| (C++20) |
位元操作 (Bit manipulation) 函式 | |
| std::bitset 類別範本 | ||
| (C++23) |
std::expected 類別範本 | |
| 函式物件、函式調用、綁定操作與參照包裝器 (Reference wrappers) | ||
| (C++17) |
std::optional 類別範本 | |
| (C++11) |
std::tuple 類別範本 | |
| 各種公用程式組件 | ||
| (C++17) |
std::variant 類別範本 | |
容器函式庫 | ||
| (C++11) |
std::array 容器 | |
| std::deque 容器 | ||
| (C++23) |
std::flat_map 與 std::flat_multimap 容器配接器 (adaptors) | |
| (C++23) |
std::flat_set 與 std::flat_multiset 容器配接器 (adaptors) | |
| (C++11) |
std::forward_list 容器 | |
| (C++26) |
std::hive 容器 | |
| (C++26) |
std::inplace_vector 容器 | |
| std::list 容器 | ||
| std::map 與 std::multimap 關聯式容器 | ||
| (C++23) |
std::mdspan 視圖 (view) | |
| std::queue 與 std::priority_queue 容器配接器 (adaptors) | ||
| std::set 與 std::multiset 關聯式容器 | ||
| (C++20) |
std::span 視圖 (view) | |
| std::stack 容器配接器 | ||
| (C++11) |
std::unordered_map 與 std::unordered_multimap 未排序關聯式容器 | |
| (C++11) |
std::unordered_set 與 std::unordered_multiset 未排序關聯式容器 | |
| std::vector 容器 | ||
疊代器函式庫 | ||
| 範圍迭代器 | ||
Ranges 程式庫 | ||
| (C++23) |
std::generator 類別範本 | |
| (C++20) |
範圍存取、基元、需求、公用程式與配接器 (adaptors) | |
演算法函式庫 | ||
| 操作範圍的演算法 | ||
| 對範圍內數值的數值操作 | ||
字串函式庫 | ||
| 各種窄字元字串處理函式 | ||
| std::basic_string 類別範本 | ||
| (C++17) |
std::basic_string_view 類別範本 | |
文本處理函式庫 | ||
| 用於確定窄字元類別的函式 | ||
| (C++17) |
std::to_chars 與 std::from_chars | |
| C 在地化 (Localization) 公用程式 | ||
| (C++11)(於 C++17 中棄用)(於 C++26 中移除) |
Unicode 轉換設施 | |
| (C++11) |
C 風格的 Unicode 字元轉換函式 | |
| 各種寬與多位元組字串處理函式 | ||
| 用於確定寬字元類別的函式 | ||
| (C++20) |
格式化函式庫,包含 std::format | |
| 在地化 (Localization) 公用程式 | ||
| (C++11) |
支援正規表示式處理的類別、演算法與迭代器 | |
| (C++26) |
文字編碼識別 | |
數值函式庫 | ||
| (C++11) |
浮點環境存取函式 | |
| 常見數學函式 | ||
| 複數類型 | ||
| (C++26) |
基本線性代數演算法 (BLAS) | |
| (C++20) |
數學常數 | |
| (C++11) |
隨機數產生器與分佈 | |
| (C++26) |
資料平行 (Data-parallel) 類型以及對這些類型的操作 | |
| 用於表示與操作數值陣列的類別 | ||
時間函式庫 | ||
| (C++11) |
C++ 時間公用程式 | |
| C 風格的時間/日期公用程式 | ||
輸入/輸出函式庫 | ||
| (C++11) |
格式化巨集,intmax_t 與 uintmax_t 的數學運算與轉換 | |
| C 風格的輸入輸出函式 | ||
| (C++17) |
std::filesystem::path 類別與支援函式 | |
| std::basic_fstream、std::basic_ifstream、std::basic_ofstream 類別範本與類型定義 (typedefs) | ||
| 用於控制輸入與輸出格式的輔助函式 | ||
| std::ios_base 類別、std::basic_ios 類別範本與類型定義 (typedefs) | ||
| 輸入/輸出函式庫中所有類別的前置宣告 | ||
| 數個標準串流物件 | ||
| std::basic_istream 類別範本與類型定義 (typedefs) | ||
| std::basic_ostream、std::basic_iostream 類別範本與類型定義 (typedefs) | ||
| (C++23) |
格式化輸出函式庫,包含 std::print | |
| (C++23) |
std::basic_spanstream、std::basic_ispanstream、std::basic_ospanstream 類別範本與類型定義 (typedefs) | |
| std::basic_stringstream、std::basic_istringstream、std::basic_ostringstream 類別範本與類型定義 (typedefs) | ||
| std::basic_streambuf 類別範本 | ||
| (於 C++98 中棄用)(於 C++26 中移除) |
std::strstream、std::istrstream、std::ostrstream | |
| (C++20) |
std::basic_osyncstream、std::basic_syncbuf 與類型定義 (typedefs) | |
並行支援函式庫 | ||
| (C++11) |
原子操作 (Atomic operations) 函式庫 | |
| (C++20) |
屏障 (Barriers) | |
| (C++11) |
執行緒等待條件 | |
| (C++11) |
非同步運算的基元 (Primitives) | |
| (C++26) |
危險指標 (Hazard pointers) | |
| (C++20) |
閂鎖 (Latches) | |
| (C++11) |
互斥 (Mutual exclusion) 基元 | |
| (C++26) |
讀取-複製-更新 (Read-copy update) 機制 | |
| (C++20) |
號誌 (Semaphores) | |
| (C++14) |
共用互斥基元 | |
| (C++20) |
用於 std::jthread 的停止權杖 (Stop tokens) | |
| (C++11) |
std::thread 類別與支援函式 | |
[編輯] C 相容性標頭檔
針對某些形式為 xxx.h 的 C 標準函式庫標頭檔,C++ 標準函式庫同時包含了一個同名的標頭檔與另一個形式為 cxxx 的標頭檔(所有有意義的 cxxx 標頭檔皆列於上方)。xxx.h 形式標頭檔的預期用途僅供互通性使用。為了成為有效的 ISO C,C++ 原始檔可能需要包含這些標頭檔之一。不打算同時作為有效 ISO C 的原始檔不應使用任何 C 標頭檔。
除了 complex.h 之外,C++ 標準函式庫中包含的每個 xxx.h 標頭檔都會將對應 cxxx 標頭檔原本會放入 std 命名空間中的每個名稱,改為放入全域命名空間中。
這些標頭檔也允許在 std 命名空間中宣告相同的名稱,且對應的 cxxx 標頭檔也允許在全域命名空間中宣告相同的名稱:包含 <cstdlib> 肯定會提供 std::malloc,也可能會提供 ::malloc。包含 <stdlib.h> 肯定會提供 ::malloc,也可能會提供 std::malloc。這甚至適用於不屬於 C 標準函式庫的函式與函式多載。
註:xxx.h 標頭檔在 C++98 中被棄用,但在 C++23 中取消棄用。對於純 C++ 程式碼不鼓勵使用這些標頭檔,但它們不會在未來被移除。
| 行為與 <cassert> 相同 | |
| 行為如同將 <cctype> 中的每個名稱放入全域命名空間中 | |
| 行為與 <cerrno> 相同 | |
| (C++11) |
行為如同將 <cfenv> 中的每個名稱放入全域命名空間中 |
| 行為與 <cfloat> 相同 | |
| (C++11) |
行為如同將 <cinttypes> 中的每個名稱放入全域命名空間中 |
| 行為與 <climits> 相同 | |
| 行為如同將 <clocale> 中的每個名稱放入全域命名空間中 | |
| 行為如同將 <cmath> 中的每個名稱放入全域命名空間中, 但數學特殊函式的名稱除外 | |
| 行為如同將 <csetjmp> 中的每個名稱放入全域命名空間中 | |
| 行為如同將 <csignal> 中的每個名稱放入全域命名空間中 | |
| 行為如同將 <cstdarg> 中的每個名稱放入全域命名空間中 | |
| 行為如同將 <cstddef> 中的每個名稱放入全域命名空間中, 但 std::byte 與其相關函式的名稱除外 | |
| (C++11) |
行為如同將 <cstdint> 中的每個名稱放入全域命名空間中 |
| 行為如同將 <cstdio> 中的每個名稱放入全域命名空間中 | |
| 行為如同將 <cstdlib> 中的每個名稱放入全域命名空間中 | |
| 行為如同將 <cstring> 中的每個名稱放入全域命名空間中 | |
| 行為如同將 <ctime> 中的每個名稱放入全域命名空間中 | |
| (C++11) |
行為如同將 <cuchar> 中的每個名稱放入全域命名空間中 |
| 行為如同將 <cwchar> 中的每個名稱放入全域命名空間中 | |
| 行為如同將 <cwctype> 中的每個名稱放入全域命名空間中 |
[編輯] 特殊 C 相容性標頭檔
標頭檔 <stdatomic.h> 宣告了 C 標準函式庫中也提供的名稱,並定義了 _Atomic 巨集,這在 C 中是一個關鍵字。與其他 xxx.h 標頭檔不同,不提供對應的 <cstdatomic>。
| (C++23) |
定義 _Atomic 並提供 C 標準函式庫中對應的組件 |
| 本節尚不完整 原因:加入 C++26 的 <stdbit.h> 與 <stdckdint.h>,以及 C29 的 <stdmchar.h>。 |
[編輯] 空 C 標頭檔
標頭檔 <complex.h>、<ccomplex>、<tgmath.h> 與 <ctgmath> 不包含任何來自 C 標準函式庫的內容,而是僅包含來自 C++ 標準函式庫的其他標頭檔。
| (C++11)(於 C++17 中棄用)(於 C++20 中移除) |
單純包含標頭檔 <complex> |
| (C++11) |
單純包含標頭檔 <complex> |
| (C++11)(於 C++17 中棄用)(於 C++20 中移除) |
單純包含標頭檔 <complex> 與 <cmath>:等同於 C 標頭檔 <tgmath.h> 內容的多載已由這些標頭檔提供 |
| (C++11) |
單純包含標頭檔 <complex> 與 <cmath> |
[編輯] 無意義的 C 標頭檔
標頭檔 <ciso646>、<cstdalign> 與 <cstdbool> 在 C++ 中是無意義的,因為它們在 C 中提供的巨集在 C++ 中是語言關鍵字。
| (於 C++20 中移除) |
空標頭檔。出現在 C 的 iso646.h 中的巨集在 C++ 中是關鍵字 |
| (C++11)(於 C++17 中棄用)(於 C++20 中移除) |
定義一個相容性巨集常數 |
| (C++11)(於 C++17 中棄用)(於 C++20 中移除) |
定義一個相容性巨集常數 |
| 無作用 | |
| (C++11) |
定義一個相容性巨集常數 |
| (C++11) |
定義一個相容性巨集常數 |
[編輯] 不支援的 C 標頭檔
C 標頭檔 <stdatomic.h>,(直到 C++23) <stdnoreturn.h> 與 <threads.h> 不包含在 C++ 中,且沒有對應的 cxxx 標頭檔。
[編輯] 實驗性函式庫
C++ TR/TS 也定義了數個標頭檔集合。
[編輯] 參見
| 關於 C 標準函式庫標頭檔 的 C 語言文件
|