工具庫
C++ 包含多種工具庫,提供的功能涵蓋從位元計數到偏函數應用。這些函式庫可大致分為兩類:
- 語言支援函式庫,以及
- 通用工具庫。
目錄 |
[編輯] 語言支援
語言支援函式庫提供與語言特性緊密互動的類別與函式,並支援常見的語言慣用語。
[編輯] 實作屬性 (C++20 起)
標頭 <version> 提供關於 C++ 標準函式庫的實作相關資訊(例如版本號與發行日期)。它亦定義了函式庫特性測試巨集。
[編輯] 型別支援
基本型別 (例如 std::size_t, std::nullptr_t), RTTI (例如 std::type_info)
[編輯] 程式工具
終止 (例如 std::abort, std::atexit), 環境 (例如 std::system), 訊號 (例如 std::raise)。
[編輯] 動態記憶體管理
智慧指標 (例如 std::shared_ptr), 配置器 (例如 std::allocator 或 std::pmr::memory_resource), C 風格記憶體管理 (例如 std::malloc)。
[編輯] 錯誤處理
異常 (例如 std::exception, std::terminate), 斷言 (例如 assert)。
[編輯] 可變參數函式
支援接受任意數量參數的函式(透過例如 va_start, va_arg, va_end)。
[編輯] 初始化列表 (C++11 起)
| 定義於標頭檔
<initializer_list> | |
| (C++11) |
引用在 列表初始化 中建立的暫存陣列 (類別模板) |
[編輯] 原始碼資訊擷取 (C++20 起)
| 定義於標頭
<source_location> | |
| (C++20) |
表示原始碼資訊(如檔案名稱、行號與函式名稱)的類別 (類別) |
[編輯] 三向比較 (C++20 起)
| 定義於標頭
<compare> | |
| 指定運算子 <=> 在給定型別上產生一致的結果 (概念) | |
| (C++20) |
支援所有 6 個運算子、不可替代且允許不可比較值的三向比較結果型別 (類別) |
| (C++20) |
支援所有 6 個運算子且不可替代的三向比較結果型別 (類別) |
| (C++20) |
支援所有 6 個運算子且可替代的三向比較結果型別 (類別) |
| 命名比較函式 (函式) | |
| (C++20) |
實作 x <=> y 的受限函式物件 (類別) |
| (C++20) |
獲取三向比較運算子 <=> 在給定型別上的結果型別 (類別模板) |
| (C++20) |
所有給定型別皆可轉換為的最強比較類別 (類別模板) |
| (C++20) |
執行三向比較並產生 std::strong_ordering 型別的結果(自訂點物件) |
| (C++20) |
執行三向比較並產生 std::weak_ordering 型別的結果(自訂點物件) |
| (C++20) |
執行三向比較並產生 std::partial_ordering 型別的結果(自訂點物件) |
執行三向比較並產生 std::strong_ordering 型別的結果,即使無法使用 operator<=>(自訂點物件) | |
| (C++20) |
執行三向比較並產生 std::weak_ordering 型別的結果,即使無法使用 operator<=>(自訂點物件) |
執行三向比較並產生 std::partial_ordering 型別的結果,即使無法使用 operator<=>(自訂點物件) | |
[編輯] 協程支援 (C++20 起)
用於協程支援的型別 (例如 std::coroutine_traits, std::coroutine_handle)。
[編輯] 契約支援 (C++26 起)
用於契約支援的型別 (例如 std::contracts::contract_violation)。
[編輯] 通用工具
[編輯] 交換 (Swap)
| 定義於標頭檔
<utility> | |
| 交換兩個物件的值 (函式模板) | |
| (C++14) |
以新值替換參數,並回傳其先前的值 (函式模板) |
| 定義於標頭
<concepts> | |
| (C++20) |
交換兩個物件的值 (自訂點物件) |
[編輯] 型別操作 (C++11 起)
| 定義於標頭檔
<utility> | |
| (C++11) |
轉發函式參數並使用型別模板參數以保留其值類別 (函式模板) |
| (C++23) |
將函式參數轉發,如同轉換為指定型別模板參數表達式的值類別與 const 性質 (函式模板) |
| (C++11) |
將參數轉換為 xvalue (函式模板) |
| (C++11) |
若移動建構子不會丟擲異常,則將參數轉換為 xvalue (函式模板) |
| (C++17) |
取得其參數的 const 引用 (函式模板) |
| (C++11) |
在未評估環境下,取得模板型別參數物件的引用 (函式模板) |
| (C++23) |
將列舉轉換為其底層型別 (函式模板) |
[編輯] 整數比較函式 (C++20 起)
| 定義於標頭檔
<utility> | |
| 比較兩個整數值,確保帶號負數小於無號數 (函式模板) | |
| (C++20) |
檢查整數值是否在給定整數型別的範圍內 (函式模板) |
[編輯] 關係運算子 (C++20 前)
| 定義於標頭檔
<utility> | |
| 定義於命名空間
std::rel_ops | |
| (C++20 中已棄用) |
根據使用者定義的 operator== 和 operator< 自動生成比較運算子 (函式模板) |
[編輯] 建構標記 (C++11 起)
| 定義於標頭檔
<utility> | |
| 分段建構標記 (標記) | |
| 就地建構標籤 (標籤) | |
| (C++26) |
值建構標記 (標記) |
[編輯] 對組 (Pairs) 與 元組 (Tuples)
| 定義於標頭檔
<utility> | |
| 實作二元元組,即一對值 (類別模板) | |
| 定義於標頭檔
<tuple> | |
| (C++11) |
實作固定大小的容器,可儲存不同型別的元素 (類別模板) |
| (C++17) |
以參數元組呼叫函式 (函式模板) |
| (C++17) |
以參數元組建構物件 (函式模板) |
元組協定 (C++11 起) | |
| 定義於標頭檔
<tuple> | |
| 定義於標頭檔
<utility> | |
| 定義於標頭檔
<array> | |
| 定義於標頭檔
<ranges> | |
| 定義於標頭
<complex> | |
| (C++11) |
取得類元組型別的元素數量 (類別模板) |
| (C++11) |
取得類元組型別的元素型別 (類別模板) |
[編輯] 總和型別與型別擦除封裝 (C++17 起)
| 定義於標頭檔
<optional> | |
| (C++17) |
一個可能持有也可能不持有物件的封裝器 (類別模板) |
| 定義於標頭
<expected> | |
| (C++23) |
包含預期值或錯誤值的封裝器 (類別範本) |
| 定義於標頭
<variant> | |
| (C++17) |
一種型別安全的識別聯合體 (discriminated union) (類別模板) |
| 定義於標頭檔
<any> | |
| (C++17) |
持有任何 CopyConstructible 型別實例的物件 (類別) |
[編輯] 位元集 (Bitset)
| 定義於標頭
<bitset> | |
| 實作固定長度位元陣列 (類別模板) | |
[編輯] 位元操作 (C++20 起)
標頭 <bit> 提供多個函式模板以存取、操作及處理個別位元與位元序列。純量型別的位元組順序(位元組序 (Endianness))可透過 std::endian 功能進行檢查。
[編輯] 函式物件 (C++11 起)
偏函數應用 (例如 std::bind) 及相關工具:用於繫結的工具(如 std::ref 與 std::placeholders)、多型函式封裝:std::function、預定義函子 (例如 std::plus, std::equal_to)、成員指標轉函式轉換器 std::mem_fn。
[編輯] 雜湊支援 (C++11 起)
| 定義於標頭檔
<functional> | |
| (C++11) |
雜湊函式物件 (class template) |
[編輯] 參閱
| C 文件 之 工具庫
|