C++ 標準庫標頭檔案
C++ 標準庫的介面由以下標頭檔案集合定義。
多用途標頭檔案 | ||
| 通用工具:程式控制、動態記憶體分配、隨機數、排序與搜尋 | ||
| (C++17) |
演算法並行版本和執行控制組件的預定義執行策略(C++26 起) | |
語言支援庫 | ||
| 浮點型別限制 | ||
| 整數型別限制 | ||
| (C++20) |
三路比較運算子支援 | |
| (C++26) |
契約支援庫 | |
| (C++20) |
協程支援庫 | |
| 儲存(和跳轉)到執行上下文的宏(和函式) | ||
| 訊號管理函式和宏常量 | ||
| 可變長度引數列表處理 | ||
| 標準宏和 typedef | ||
| (C++11) |
固定寬度整數型別和其他型別限制 | |
| 異常處理工具 | ||
| (C++11) |
std::initializer_list 類模板 | |
| 查詢算術型別屬性 | ||
| 低階記憶體管理工具 | ||
| (C++20) |
提供獲取原始碼位置的方法 | |
| (C++23) |
固定寬度浮點型別 | |
| (C++11) |
std::type_index | |
| 執行時型別資訊工具 | ||
| (C++20) |
提供宏以驗證庫的實現狀態 | |
概念庫 | ||
| (C++20) |
基本庫概念 | |
診斷庫 | ||
| 將引數與零比較的條件編譯宏 | ||
| 包含上次錯誤碼的宏 | ||
| (C++26) |
除錯庫 | |
| (C++23) |
棧回溯庫 | |
| 標準異常型別 | ||
| (C++11) |
定義 std::error_code,一個依賴於平臺的錯誤碼 | |
記憶體管理庫 | ||
| 高階記憶體管理工具 | ||
| (C++17) |
多型分配器和記憶體資源 | |
| (C++11) |
巢狀分配器類 | |
超程式設計庫 | ||
| (C++11) |
編譯時有理數運算 | |
| (C++11) |
編譯時型別資訊工具 | |
通用工具庫 | ||
| (C++17) |
std::any 類 | |
| (C++20) |
位操作函式 | |
| std::bitset 類模板 | ||
| (C++23) |
std::expected 類模板 | |
| 函式物件、函式呼叫、繫結操作和引用包裝器 | ||
| (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 容器介面卡 | |
| (C++23) |
std::flat_set 和 std::flat_multiset 容器介面卡 | |
| (C++11) |
std::forward_list 容器 | |
| (C++26) |
std::hive 容器 | |
| (C++26) |
std::inplace_vector 容器 | |
| std::list 容器 | ||
| std::map 和 std::multimap 關聯容器 | ||
| (C++23) |
std::mdspan 檢視 | |
| std::queue 和 std::priority_queue 容器介面卡 | ||
| std::set 和 std::multiset 關聯容器 | ||
| (C++20) |
std::span 檢視 | |
| std::stack 容器介面卡 | ||
| (C++11) |
std::unordered_map 和 std::unordered_multimap 無序關聯容器 | |
| (C++11) |
std::unordered_set 和 std::unordered_multiset 無序關聯容器 | |
| std::vector 容器 | ||
迭代器庫 | ||
| 範圍迭代器 | ||
範圍庫 (Ranges library) | ||
| (C++23) |
std::generator 類模板 | |
| (C++20) |
範圍訪問、原語、需求、工具和介面卡 | |
演算法庫 | ||
| 在範圍上操作的演算法 | ||
| 對範圍內的值進行數值操作 | ||
字串庫 | ||
| 各種窄字元字串處理函式 | ||
| std::basic_string 類模板 | ||
| (C++17) |
std::basic_string_view 類模板 | |
文字處理庫 | ||
| 確定窄字元類別的函式 | ||
| (C++17) |
std::to_chars 和 std::from_chars | |
| C 本地化工具 | ||
| (C++11)(C++17 中已棄用)(C++26 中已移除) |
Unicode 轉換工具 | |
| (C++11) |
C 風格的Unicode 字元轉換函式 | |
| 各種寬和多位元組字串處理函式 | ||
| 確定寬字元類別的函式 | ||
| (C++20) |
格式化庫,包括 std::format | |
| 本地化工具 | ||
| (C++11) |
支援正則表示式處理的類、演算法和迭代器 | |
| (C++26) |
文字編碼識別 | |
數值庫 | ||
| (C++11) |
浮點環境訪問函式 | |
| 常用數學函式 | ||
| 複數型別 | ||
| (C++26) |
基本線性代數演算法 (BLAS) | |
| (C++20) |
數學常數 | |
| (C++11) |
隨機數生成器和分佈 | |
| (C++26) |
資料並行型別以及對這些型別的操作 | |
| 表示和操作值陣列的類 | ||
時間庫 | ||
| (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 類模板和 typedef | ||
| 幫助函式以控制輸入和輸出的格式 | ||
| std::ios_base 類、std::basic_ios 類模板和 typedef | ||
| 輸入/輸出庫中所有類的前向宣告 | ||
| 幾個標準流物件 | ||
| std::basic_istream 類模板和 typedef | ||
| std::basic_ostream、std::basic_iostream 類模板和 typedef | ||
| (C++23) |
格式化輸出庫,包括 std::print | |
| (C++23) |
std::basic_spanstream、std::basic_ispanstream、std::basic_ospanstream 類模板和 typedef | |
| std::basic_stringstream、std::basic_istringstream、std::basic_ostringstream 類模板和 typedef | ||
| std::basic_streambuf 類模板 | ||
| (在 C++98 中已廢棄)(在 C++26 中已移除) |
std::strstream、std::istrstream、std::ostrstream | |
| (C++20) |
std::basic_osyncstream、std::basic_syncbuf 和 typedef | |
併發支援庫 | ||
| (C++11) |
原子操作庫 | |
| (C++20) |
屏障 | |
| (C++11) |
執行緒等待條件 | |
| (C++11) |
非同步計算原語 | |
| (C++26) |
危險指標 | |
| (C++20) |
閂 | |
| (C++11) |
互斥原語 | |
| (C++26) |
讀-複製-更新機制 | |
| (C++20) |
訊號量 | |
| (C++14) |
共享互斥原語 | |
| (C++20) |
std::jthread 的停止令牌 | |
| (C++11) |
std::thread 類和支援函式 | |
[編輯] C 相容標頭檔案
對於某些形式為 xxx.h 的 C 標準庫標頭檔案,C++ 標準庫既包含同名標頭檔案,也包含形式為 cxxx 的另一個頭檔案(所有有意義的 cxxx 標頭檔案都已列在上面)。形式為 xxx.h 的標頭檔案的預期用途僅限於互操作性。C++ 原始檔可能需要包含這些標頭檔案之一才能成為有效的 ISO 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++ TRs/TSs 也定義了幾種標頭檔案集合。
[編輯] 參見
| C 文件,用於C 標準庫標頭檔案
|