最全C++11/14/17/20/23 的新特性代碼案例
來源 https://zhuanlan.zhihu.com/p/389895793
C++11新特性
關鍵字
新增關鍵字
含義變化或者新增含義關鍵字(meaning changed or new meaning added)
類型支持(基本類型、RTTI、類型特性)
Defined in header <type_traits>
- is_void
- is_integral
- is_floating_point
- is_array
- is_enum
- is_union
- is_class
- is_function
- is_pointer
- is_lvalue_reference
- is_rvalue_reference
- is_member_object_pointer
- is_member_function_pointer
- is_fundamental
- is_arithmetic
- is_scalar
- is_object
- is_compound
- is_reference
- is_member_pointer
- is_const
- is_volatile
- is_trivial
- is_trivially_copyable
- is_standard_layout
- is_literal_type
- is_empty
- is_polymorphic
- is_abstract
- is_signed
- is_unsigned
- is_constructible
- is_trivially_constructible
- is_nothrow_constructible
- is_default_constructible
- is_trivially_default_constructible
- is_nothrow_default_constructible
- is_copy_constructible
- is_trivially_copy_constructible
- is_nothrow_copy_constructible
- is_move_constructible
- is_trivially_move_constructible
- is_nothrow_move_constructible
- is_assignable
- is_trivially_assignable
- is_nothrow_assignable
- is_copy_assignable
- is_trivially_copy_assignable
- is_nothrow_copy_assignable
- is_move_assignable
- is_trivially_move_assignable
- is_nothrow_move_assignable
- is_destructible
- is_trivially_destructible
- is_nothrow_destructible
- has_virtual_destructor
STL容器
無序容器
元組std::tuple
hash
- std::hash<std::string>
- std::hash<std::u16string>
- std::hash<std::u32string>
- std::hash<std::wstring>
- std::hash<std::error_code>
- std::hash<std::bitset>
- std::hash<std::type_index>
- std::hash<std::vector<bool>>
智能指針
正則表達式
函數
非靜態成員函數
函數對象模板
類
模板
原子操作
- std::atomic<bool>
- std::atomic<char>
- std::atomic<signed char>
- std::atomic<unsigned char>
- std::atomic<short>
- std::atomic<unsigned short>
- std::atomic<int>
- std::atomic<unsigned int>
- std::atomic<long>
- std::atomic<unsigned long>
- std::atomic<long long>
- std::atomic<unsigned long long>
- std::atomic<char8_t>
- std::atomic<char16_t>
- std::atomic<char32_t>
- std::atomic<wchar_t>
- std::atomic<std::int8_t>
- std::atomic<std::uint8_t>
- std::atomic<std::int16_t>
- std::atomic<std::uint16_t>
- std::atomic<std::int32_t>
- std::atomic<std::uint32_t>
- std::atomic<std::int64_t>
- std::atomic<std::uint64_t>
- std::atomic<std::int_least8_t>
- std::atomic<std::uint_least8_t>
- std::atomic<std::int_least16_t>
- std::atomic<std::uint_least16_t>
- std::atomic<std::int_least32_t>
- std::atomic<std::uint_least32_t>
- std::atomic<std::int_least64_t>
- std::atomic<std::uint_least64_t>
- std::atomic<std::int_fast8_t>
- std::atomic<std::uint_fast8_t>
- std::atomic<std::int_fast16_t>
- std::atomic<std::uint_fast16_t>
- std::atomic<std::int_fast32_t>
- std::atomic<std::uint_fast32_t>
- std::atomic<std::int_fast64_t>
- std::atomic<std::uint_fast64_t>
- std::atomic<std::intptr_t>
- std::atomic<std::uintptr_t>
- std::atomic<std::size_t>/a>
- std::atomic<std::ptrdiff_t>
- std::atomic<std::intmax_t>
- std::atomic<std::uintmax_t>
線程
- std::thread
- std::mutex
- std::lock
- std::call_once
- std::atomic
- std::condition_variable
- async
- volatile
- std::future
- std::thread_local
異常
- std::exception_ptr
- std::make_exception_ptr
- std::current_exception
- std::rethrow_exception
- std::nested_exception
- std::throw_with_nested
- std::rethrow_if_nested
錯誤
- std::error_category
- std::generic_category
- std::error_condition
- std::errc
- std::error_code
- std::system_error
新語法
預處理
- 語法:__pragma(字符串字面量)
- _Pragma運算符
C++宏(cplusplus macro)
基於范圍的for語句
對齊支持(alignment support)
顯式轉換操作符(explicit conversion operators)
靜態斷言(static assert)
- 語法:static_assert(常量表達式,"提示字符串")
- static assert
數字限制(numeric limits)
原始字符串(raw string)
追蹤返回類型語法(trailing return type syntax)
擴展的friend語法(extended friend syntax)
擴展的整型(extended integer types)
非受限聯合體(unrestricted union)
內聯名字空間(lnline namespace)
用戶定義的字面量(user-defined literals)
強類型枚舉(scoped and strongly typed enums)
隨機裝置(random device)
std::ref和std::cref
常量表達式(constexpr)
lamda表達式
指針空值(nullptr)
防止類型收窄(Preventing narrowing)
初始化列表(initializer lists)
統一的初始化語法和語義(Uniform initialization syntax and semantics)
POD(plain old data)
long long整型
移動語義(move semantics)
右值引用(rvalue reference)
c99特性(c99)
一般化的SFINAE規則(generalized SFINAE rules)
C++14新特性
類型支持(基本類型、RTTI、類型特性)
Defined in header<type_traits>
Defined in header<utility>
Defined in header<initializer_list>
Defined in header<iterator>
Defined in namespace std
Defined in header <array>
Defined in header <deque>
Defined in header <forward_list>
Defined in header <iterator>
Defined in header <list>
Defined in header <map>
Defined in header <regex>
Defined in header <set>
Defined in header <span>
Defined in header <string>
Defined in header <string_view>
Defined in header <unordered_map>
Defined in header <unordered_set>
Defined in header <vector>
Defined in namespace std
- begin(返回指向容器或數組起始的迭代器)
- cbegin(返回指向容器或數組起始的迭代器)
- end(返回指向容器或數組結尾的迭代器)
- cend(返回指向容器或數組結尾的迭代器)
- rbegin(返回指向一個容器或數組的逆向迭代器)
- crbegin(返回指向一個容器或數組的逆向迭代器)
- rend(返回容器或數組的逆向尾迭代器)
- crend(返回容器或數組的逆向尾迭代器)
C++17新特性
關鍵字
含義變化或者新增含義關鍵字(meaning changed or new meaning added)
類型支持(基本類型、RTTI、類型特性)
Defined in header<type_traits>
- byte(字節類型)
- is_aggregate(檢查類型是否聚合類型)
- is_swappable_with(檢查一個類型的對象是否能與同類型或不同類型的對象交換)
- is_swappable(檢查一個類型的對象是否能與同類型或不同類型的對象交換)
- is_nothrow_swappable_with(檢查一個類型的對象是否能與同類型或不同類型的對象交換)
- is_nothrow_swappable(檢查一個類型的對象是否能與同類型或不同類型的對象交換)
- is_invocable(檢查類型能否以給定的實參類型調用(如同以 std::invoke))
- is_invocable_r(檢查類型能否以給定的實參類型調用(如同以 std::invoke))
- is_nothrow_invocable(檢查類型能否以給定的實參類型調用(如同以 std::invoke))
- is_nothrow_invocable_r(檢查類型能否以給定的實參類型調用(如同以 std::invoke))
- invoke_result(推導以一組實參調用一個可調用對象的結果類型)
- void_t(變參別名模板)
- conjunction(變參的邏輯與元函數)
- disjunction(變參的邏輯或元函數)
- ndisjunctionegation(邏輯非元函數)
- void_t(變參別名模板)
- bool_constant(具有指定值的指定類型的編譯期常量)
Defined in header<utility>
- as_const(獲得到其實參的 const 引用)
- in_place(原位構造標簽)
- in_place_type(原位構造標簽)
- in_place_index(原位構造標簽)
- in_place_t(原位構造標簽)
- in_place_type_t(原位構造標簽)
- in_place_index_t(原位構造標簽)
Defined in header<tuple>
Defined in header<optional>
- optional(可能或可能不保有一個對象的包裝器)
- make_optional(創建一個 optional 對象)
- std::swap(std::optional)(特化 std::swap 算法)
- std::hashstd::optional(特化 std::hash 算法)
- nullopt_t(帶未初始化狀態的 optional 類型的指示器)
- bad_optional_access(指示進行了到不含值的 optional 的有檢查訪問的異常)
- nullopt(nullopt_t 類型對象)
- in_place(原位構造標簽)
- in_place_type(原位構造標簽)
- in_place_index(原位構造標簽)
- in_place_t(原位構造標簽)
- in_place_type_t(原位構造標簽)
- in_place_index_t(原位構造標簽)
Defined in header<variant>
- variant(類型安全的可辨識聯合體)
- visit(以一或多個 variant 所保有的各實參調用所提供的函數對象)
- holds_alternative(檢查某個 variant 是否當前持有某個給定類型)
- std::get(std::variant)(以給定索引或類型(若類型唯一)讀取 variant 的值,錯誤時拋出異常)
- get_if(以給定索引或類型(若其唯一),獲得指向被指向的 variant 的值的指針,錯誤時返回空指針)
- std::swap(std::variant)(特化 std::swap 算法)
- monostate(用作非可默認構造類型的 variant 的首個可選項的占位符類型)
- bad_variant_access(非法地訪問 variant 的值時拋出的異常)
- variant_size(在編譯時獲得 variant 可選項列表的大小)
- variant_size_v(在編譯時獲得 variant 可選項列表的大小)
- variant_alternative(在編譯時獲得以其下標指定的可選項的類型)
- variant_alternative_t(在編譯時獲得以其下標指定的可選項的類型)
- std::hash<std::variant>(特化 std::hash 算法)
- variant_npos(非法狀態的 variant 的下標)
Defined in header<any>
- any(可保有任何可復制構造 (CopyConstructible) 類型的實例的對象)
- std::swap(std::any)(特化 std::swap 算法)
- any_cast(對被容納對象的類型安全訪問)
- make_any(創建 any 對象)
- bad_any_cast(當類型不匹配時按值返回形式的 any_cast 所拋出的異常)
Defined in header<charconv>
- to_chars(轉換整數或浮點值到字符序列象)
- from_chars(轉換字符序列到整數或浮點值)
- chars_format(指定 std::to_chars 和 std::from_chars 所用的格式)
Defined in header<initializer_list>
容器庫
Defined in header<map>
- insert_or_assign(插入元素,或若鍵已存在則賦值給當前元素)
- try_emplace(若鍵不存在則原位插入,若鍵存在則不做任何事)
- extract(從另一容器釋出結點)
- merge(從另一容器接合結點)
Defined in header<unordered_map>
- insert_or_assign(插入元素,或若鍵已存在則賦值給當前元素)
- try_emplace(若鍵不存在則原位插入,若鍵存在則不做任何事)
- extract(從另一容器釋出結點)
- merge(從另一容器接合結點)
Defined in header <array>
Defined in header <deque>
Defined in header <forward_list>
Defined in header <iterator>
Defined in header <list>
Defined in header <map>
Defined in header <regex>
Defined in header <set>
Defined in header <span>
Defined in header <string>
Defined in header <string_view>
Defined in header <unordered_map>
Defined in header <unordered_set>
Defined in header <vector>
Defined in namespace std
C++20新特性
關鍵字
新增關鍵字
含義變化或者新增含義關鍵字(meaning changed or new meaning added)
類型支持(基本類型、RTTI、類型特性)
Defined in header<type_traits>
- is_bounded_array(檢查類型是否為有已知邊界的數組類型)
- is_unbounded_array(檢查類型是否為有未知邊界的數組類型)
- is_layout_compatible(檢查二個類型是否布局兼容)
- is_pointer_interconvertible_base_of(檢查一個類型是否為另一類型的指針可互轉換(起始)基類)
- is_pointer_interconvertible_with_class(檢查一個類型的對象是否與該類型的指定子對象指針可互轉換)
- is_corresponding_member(檢查二個指定成員是否在二個指定類型中的公共起始序列中彼此對應)
- is_nothrow_convertible(檢查是否能轉換一個類型為另一類型)
- remove_cvref(將 std::remove_cv 與 std::remove_reference 結合)
- common_reference(確定類型組的共用引用類型)
- basic_common_reference(確定類型組的共用引用類型)
- type_identity(返回不更改的類型實參)
- is_constant_evaluated(檢測調用是否在常量求值的語境內發生)
協程支持
Defined in header<coroutine>
- coroutine_traits(用於發現協程承諾類型的特征類型)
- coroutine_handle(用於指代暫停或執行的協程)
- noop_coroutine(創建在等待或銷毀時無操作的協程柄)
- noop_coroutine_promise(用於無可觀察作用的協程)
- noop_coroutine_handle(std::coroutine_handle<std::noop_coroutine_promise> ,有意用於指代無操作協程)
- suspend_never(指示 await 表達式應該決不暫停)
- suspend_always(指示 await 表達式應該始終暫停)
三路比較
Defined in header<compare>
- std::coroutine_traits
- std::coroutine_handle
- three_way_comparable(指定運算符 <=> 在給定類型上產生一致的結果)
- three_way_comparable_with(指定運算符 <=> 在給定類型上產生一致的結果)
- partial_ordering(三路比較的結果類型,支持所有 6 種運算符,不可替換,並允許不可比較的值)
- weak_ordering(三路比較的結果類型,支持所有 6 種運算符且不可替換)
- strong_ordering(三路比較的結果類型,支持所有 6 種運算符且可替換)
- is_eq(具名比較函數)
- is_neq(具名比較函數)
- is_lt(具名比較函數)
- is_lteq(具名比較函數)
- is_gt(具名比較函數)
- is_gteq(具名比較函數)
- compare_three_way(實現 x <=> y 的函數對象)
- compare_three_way_result(獲得三路比較運算符 <=> 在給定類型上的結果)
- common_comparison_category(給定的全部類型都能轉換到的最強比較類別)
- strong_order(進行三路比較並產生 std::strong_ordering 類型結果)
- weak_order(進行三路比較並產生 std::weak_ordering 類型結果)
- partial_order(進行三路比較並產生 std::partial_ordering 類型結果)
- compare_strong_order_fallback(進行三路比較並產生 std::strong_ordering 類型的結果,即使 operator<=> 不可用)
- compare_weak_order_fallback(進行三路比較並產生 std::weak_ordering 類型的結果,即使 operator<=> 不可用)
- compare_partial_order_fallback(進行三路比較並產生 std::partial_ordering 類型的結果,即使 operator<=> 不可用
Defined in header<concepts>
Defined in header<utility>
- cmp_equal(比較二個整數值,而無轉換所致的值更改)
- cmp_not_equal(比較二個整數值,而無轉換所致的值更改)
- cmp_less(比較二個整數值,而無轉換所致的值更改)
- cmp_less_equal(比較二個整數值,而無轉換所致的值更改)
- cmp_greater_equal(比較二個整數值,而無轉換所致的值更改)
- in_range(檢查整數值是否在給定整數類型的范圍內)
Defined in header<format>
- format(在新 string 中存儲參數的格式化表示)
- format_to(通過輸出迭代器寫其參數的格式化表示)
- format_to_n(通過輸出迭代器寫其參數的格式化表示,不超出指定的大小)
- formatted_size(確定存儲其參數的格式化表示所需的字符數)
- vformat(std::format 的使用類型擦除的參數表示的非模板變體)
- vformat_to(std::format_to 的使用類型擦除的參數表示的非模板變體)
- formatter(定義給定類型的格式化規則的類模板)
- format_error(格式化錯誤時拋出的異常類型)
- basic_format_arg(提供對用戶定義格式化器的格式化參數的訪問的類模板)
- basic_format_parse_context(格式化字符串分析器狀態)
- format_parse_context(格式化字符串分析器狀態)
- wformat_parse_context(格式化字符串分析器狀態)
- basic_format_context(格式化狀態,包括所有格式化參數和輸出迭代器)
- format_context(格式化狀態,包括所有格式化參數和輸出迭代器)
- wformat_context(格式化狀態,包括所有格式化參數和輸出迭代器)
- visit_format_arg(用戶定義格式化器的參數觀覽接口)
- make_format_args(創建引用所有格式化參數的類型擦除對象,可轉換到 format_args)
- make_wformat_args(創建引用所有格式化參數的類型擦除對象,可轉換到 format_args)
- basic_format_args(提供對所有格式化參數的訪問的類)
- format_args(提供對所有格式化參數的訪問的類)
- wformat_args(提供對所有格式化參數的訪問的類)
Defined in header<memory>
- uninitialized_move(移動一個范圍的對象到未初始化的內存區域)
- uninitialized_move_n(移動一定數量對象到未初始化內存區域)
- uninitialized_default_construct(在范圍所定義的未初始化的內存區域以默認初始化構造對象)
- uninitialized_default_construct_n(在起始和計數所定義的未初始化內存區域用默認初始化構造對象)
- uninitialized_value_construct(在范圍所定義的未初始化內存中用值初始化構造對象)
- uninitialized_value_construct_n(在起始和計數所定義的未初始化內存區域以值初始化構造對象)
- destroy_at(銷毀在給定地址的對象)
- destroy(銷毀一個范圍中的對象)
- destroy_n(銷毀范圍中一定數量的對象)
Defined in header<memory_resource>
- polymorphic_allocator(以 std::memory_resource 構造,支持基於它的運行時多態的分配器)
- memory_resource(一個抽象接口,用於各種封裝內存資源的類)
- new_delete_resource(返回一個靜態的程序范圍 std::pmr::memory_resource,它使用全局 operator new 與 operator delete 分配和解分配內存
- null_memory_resource(返回一個不進行任何分配的靜態 std::pmr::memory_resource)
- get_default_resource(獲取缺省 std::pmr::memory_resource)
- set_default_resource(設置缺省 std::pmr::memory_resource)
- pool_options(一組池資源的構造函數選項)
- synchronized_pool_resource(線程安全的 std::pmr::memory_resource,用於管理具有不同塊大小的池中的分配)
- unsynchronized_pool_resource(線程不安全的 std::pmr::memory_resource,用於管理具有不同塊大小的池中的分配)
- monotonic_buffer_resource(一種特殊用途的 std::pmr::memory_resource,僅在資源被銷毀時才釋放所分配內存)
Concepts library(概念庫)
Defined in header<concepts>
- same_as(指定一個類型與另一類型相同)
- derived_from(指定一個類型派生自另一類型)
- convertible_to(指定一個類型能隱式轉換成另一類型)
- common_reference_with(指定兩個類型共有一個公共引用類型)
- common_with(指定兩個類型共有一個公共類型)
- integral(指定類型為整型類型)
- signed_integral(指定類型為有符號的整型類型)
- unsigned_integral(指定類型為無符號的整型類型)
- floating_point(指定類型為浮點類型)
- assignable_from(指定一個類型能從另一類型賦值)
- swappable(指定一個類型能進行交換,或兩個類型能彼此交換)
- swappable_with(指定一個類型能進行交換,或兩個類型能彼此交換)
- destructible(指定能銷毀該類型的對象)
- constructible_from(指定該類型的變量能從一組實參類型進行構造,或綁定到一組實參類型)
- default_initializable(指定能默認構造一個類型的對象)
- move_constructible(指定能移動構造一個類型的對象)
- copy_constructible(指定能復制構造和移動構造一個類型的對象)
- boolean-testable(指定能用於布爾語境的類型)
- equality_comparable(指定運算符 == 為等價關系)
- equality_comparable_with(指定運算符 == 為等價關系)
- totally_ordered(指定比較運算符在該類型上產生全序)
- totally_ordered_with(指定比較運算符在該類型上產生全序)
- movable(指定能移動及交換一個類型的對象)
- copyable(指定能復制、移動及交換一個類型的對象)
- semiregular(指定能賦值、移動、交換及默認構造一個類型的對象)
- regular(指定類型為正則,即它既為 semiregular 亦為 equality_comparable)
- invocable(指定能以給定的一組實參類型調用的可調用類型)
- regular_invocable(指定能以給定的一組實參類型調用的可調用類型)
- predicate(指定可調用類型為布爾謂詞)
- relation(指定可調用類型為二元關系)
- equivalence_relation(指定 relation 施加等價關系)
- strict_weak_order(指定一個 relation 所強加的是嚴格弱序)
動態內存管理
Defined in header<memory>
- uses_allocator_construction_args(准備匹配給定類型所要求的使用分配器構造的口味的參數列表)
- make_obj_using_allocator(以使用分配器構造的手段創建給類型的對象)
- uninitialized_construct_using_allocator(以使用分配器構造的手段在指定的內存位置創建給定類型的對象)
- construct_at(在給定地址創建對象)
- no-throw-input-iterator(指定迭代器、哨位和范圍上的某些操作不拋出)
- no-throw-forward-iterator(指定迭代器、哨位和范圍上的某些操作不拋出)
- no-throw-sentinel-for(指定迭代器、哨位和范圍上的某些操作不拋出)
- no-throw-input-range(指定迭代器、哨位和范圍上的某些操作不拋出)
- no-throw-forward-range(指定迭代器、哨位和范圍上的某些操作不拋出)
- ranges::uninitialized_copy(復制元素范圍到未初始化的內存區域)
- ranges::uninitialized_copy_n(復制一定量元素到未初始化的內存區域)
- ranges::uninitialized_fill(復制一個對象到范圍所定義的未初始化的內存區域)
- ranges::uninitialized_fill_n(復制一個對象到起始與計數所定義的未初始化的內存區域)
- ranges::uninitialized_move(移動對象范圍到未初始化的內存區域)
- ranges::uninitialized_move_n(移動一定量對象到未初始化的內存區域)
- ranges::uninitialized_default_construct(在范圍所定義的未初始化的內存區域以默認初始化構造對象)
- ranges::uninitialized_default_construct_n(在起始與計數所定義的未初始化的內存區域以默認初始化構造對象)
- ranges::uninitialized_value_construct(在范圍所定義的未初始化的內存區域以值初始化構造對象)
- ranges::uninitialized_value_construct_n(在起始與計數所定義的未初始化的內存區域以值初始化構造對象)
- ranges::destroy_at(銷毀位於給定地址的元素)
- ranges::destroy(銷毀范圍中的元素)
- ranges::destroy_n(銷毀范圍中一定量的元素)
- ranges::construct_at(在給定地址創建對象)
- to_address(從指針式類型獲得裸指針)
- assume_aligned(告知編譯器指針已對齊)
日期和時間工具
Defined in header<chrono>
- is_clock(確定類型是否為時鍾 (Clock))
- is_clock_v(確定類型是否為時鍾 (Clock))
- utc_clock(協調世界時 (UTC) 的時鍾 (Clock))
- tai_clock(國際原子時 (TAI) 的時鍾 (Clock))
- gps_clock(GPS 時間的時鍾 (Clock))
- file_clock(用於文件時間的時鍾 (Clock))
- local_t(表示本地時間的偽時鍾)
- clock_time_conversion(定義如何轉換一個時鍾的時間點為另一個的特性類)
- clock_cast(轉換一個時鍾的時間點為另一個)
- time_of_day(表示一日中的時間)
- is_am(在 12 時和 24 時格式當天時刻之間翻譯)
- is_pm(在 12 時和 24 時格式當天時刻之間翻譯)
- make12(在 12 時和 24 時格式當天時刻之間翻譯)
- make24(在 12 時和 24 時格式當天時刻之間翻譯)
- last_spec(指示一個月中最后日期或星期的標簽類)
- day(表示月之日期)
- month(表示年之月份)
- year(表示格里高利歷中的年)
- weekday(表示格里高利歷中星期之日)
- weekday_indexed(表示月份的第 n 個 weekday)
- weekday_last(表示月份的最后一個 weekday)
- month_day(表示特定 month 的特定 day)
- month_day_last(表示特定 month 的最后一日)
- month_weekday(表示特定 month 的第 n 個 weekday)
- month_weekday_last(表示特定 month 的最后一個 weekday)
- year_month(表示特定 year 的特定 month)
- year_month_day(表示特定的 year 、 month 和 day)
- year_month_day_last(表示特定 year 和 month 的最后一日)
- year_month_weekday(表示特定 year 和 month 的第 n 個 weekday)
- year_month_weekday_last(表示特定 year 和 month 的最后一個 weekday)
- operator/(創建格里高利歷日期的約定語法)
- tzdb(描述 IANA 時區數據庫的副本)
- tzdb_list(表示 tzdb 的鏈表)
- get_tzdb(訪問和控制全球時區數據庫信息)
- get_tzdb_list(訪問和控制全球時區數據庫信息)
- reload_tzdb(訪問和控制全球時區數據庫信息)
- remote_version(訪問和控制全球時區數據庫信息)
- locate_zone(定位基於其名稱的 time_zone)
- current_zone(返回當前的 time_zone)
- time_zone(表示時區)
- sys_info(表示在特定時間點的關於時區的信息)
- local_info(表示關於從本地時間轉換到 UNIX 時間的信息)
- choose(選擇應如何解析歧義的本地時間)
- zoned_traits(zoned_time 所用的時區指針的特性類)
- zoned_time(表示時區和時間點)
- leap_second(含有關於插入閏秒的信息)
- time_zone_link(表示時區的替用名)
- nonexistent_local_time(拋出以報告本地時間不存在的異常)
- ambiguous_local_time(拋出以報告本地時間有歧義的異常)
- parse(從流分析 chrono 對象)
字符串
Defined in header<string>
Defined in header<string_view>
Defined in header<cuchar>
容器庫
Defined in header<array>
Defined in header<vector>
Defined in header<map>
Defined in header<unordered_map>
Defined in header<span>
- begin(返回指向起始的迭代器)
- end(返回指向末尾的迭代器)
- rbegin(返回指向起始的逆向迭代器)
- rend(返回指向末尾的逆向迭代器)
- front(訪問第一個元素)
- back(訪問最后一個元素)
- dynamic_extent(size_t 類型常量,指明 span 擁有動態長度)
Defined in namespace std
- indirectly_readable(指定類型通過應用運算符 * 可讀)
- indirectly_writable(指定可向迭代器所引用的對象寫入值)
- weakly_incrementable(指定 semiregular 類型能以前后自增運算符自增)
- incrementable(指定 weakly_incrementable 類型上的自增操作保持相等性,而且該類型為 equality_comparable)
- input_or_output_iterator(指定該類型對象可以自增且可以解引用)
- sentinel_for(指定類型為某個 input_or_output_iterator 類型的哨位類型)
- sized_sentinel_for(指定可對一個迭代器和一個哨位應用 - 運算符,以在常數時間計算其距離)
- input_iterator(指定類型為輸入迭代器,即可讀取其所引用的值,且可前/后自增)
- output_iterator(指定類型為給定的值類型的輸出迭代器,即可向其寫入該類型的值,且可前/后自增)
- forward_iterator(指定 input_iterator 為向前迭代器,支持相等比較與多趟操作)
- bidirectional_iterator(指定 forward_iterator 為雙向迭代器,支持向后移動)
- random_access_iterator(指定 bidirectional_iterator 為隨機訪問迭代器,支持常數時間內的前進和下標訪問)
- contiguous_iterator(指定 random_access_iterator 為連續迭代器,指代內存中連續相接的元素)
- indirectly_readable_traits(計算 indirectly_readable 類型的值類型)
- iter_value_t(計算迭代器的關聯類型)
- iter_reference_t(計算迭代器的關聯類型)
- iter_difference_t(計算迭代器的關聯類型)
- iter_rvalue_reference_t(計算迭代器的關聯類型)
- iter_common_reference_t(計算迭代器的關聯類型)
- iterator_traits(為迭代器各項性質提供統一接口)
- input_iterator_tag(用於指示迭代器類別的空類類型)
- output_iterator_tag(用於指示迭代器類別的空類類型)
- forward_iterator_tag(用於指示迭代器類別的空類類型)
- bidirectional_iterator_tag(用於指示迭代器類別的空類類型)
- random_access_iterator_tag(用於指示迭代器類別的空類類型)
- contiguous_iterator_tag(用於指示迭代器類別的空類類型)
Defined in namespace std::ranges
Defined in namespace std
- indirectly_readable(指定類型通過應用運算符 * 可讀)
- indirectly_writable(指定可向迭代器所引用的對象寫入值)
- weakly_incrementable(指定 semiregular 類型能以前后自增運算符自增)
- incrementable(指定 weakly_incrementable 類型上的自增操作保持相等性,而且該類型為 equality_comparable)
- input_or_output_iterator(指定該類型對象可以自增且可以解引用)
- sentinel_for(指定類型為某個 input_or_output_iterator 類型的哨位類型)
- sized_sentinel_for(指定可對一個迭代器和一個哨位應用 - 運算符,以在常數時間計算其距離)
- input_iterator(指定類型為輸入迭代器,即可讀取其所引用的值,且可前/后自增)
- output_iterator(指定類型為給定的值類型的輸出迭代器,即可向其寫入該類型的值,且可前/后自增)
- forward_iterator(指定 input_iterator 為向前迭代器,支持相等比較與多趟操作)
- bidirectional_iterator(指定 forward_iterator 為雙向迭代器,支持向后移動)
- random_access_iterator(指定 bidirectional_iterator 為隨機訪問迭代器,支持常數時間內的前進和下標訪問)
- contiguous_iterator(指定 random_access_iterator 為連續迭代器,指代內存中連續相接的元素)
- incrementable_traits(計算 weakly_incrementable 類型的差類型)
- indirectly_readable_traits(計算 indirectly_readable 類型的值類型)
- iter_value_t(計算迭代器的關聯類型)
- iter_reference_t(計算迭代器的關聯類型)
- iter_difference_t(計算迭代器的關聯類型)
- iter_rvalue_reference_t(計算迭代器的關聯類型)
- iter_common_reference_t(計算迭代器的關聯類型)
- iterator_traits(為迭代器各項性質提供統一接口)
- input_iterator_tag(用於指示迭代器類別的空類類型)
- output_iterator_tag(用於指示迭代器類別的空類類型)
- forward_iterator_tag(用於指示迭代器類別的空類類型)
- bidirectional_iterator_tag(用於指示迭代器類別的空類類型)
- random_access_iterator_tag(用於指示迭代器類別的空類類型)
- contiguous_iterator_tag(用於指示迭代器類別的空類類型)
Defined in header
Defined in namespace std
- indirectly_unary_invocable(指定可調用類型能以解引用某個 indirectly_readable 類型的結果進行調用)
- indirectly_regular_unary_invocable(指定可調用類型能以解引用某個 indirectly_readable 類型的結果進行調用)
- indirect_unary_predicate(指定可調用類型,在以解引用一個 indirectly_readable 類型的結果進行調用時,滿足 predicate)
- indirect_binary_predicate(指定可調用類型,在以解引用兩個 indirectly_readable 類型的結果進行調用時,滿足 predicate)
- indirect_equivalence_relation(指定可調用類型,在以解引用兩個 indirectly_readable 類型的結果進行調用時,滿足 equivalence_relation)
- indirect_strict_weak_order(指定可調用類型,在以解引用兩個 indirectly_readable 類型的結果進行調用時,滿足 strict_weak_order)
- indirectly_movable(指定可從 indirectly_readable 類型移動值給 indirectly_writable 類型)
- indirectly_movable_storable(指定可從 indirectly_readable 類型移動值給 indirectly_writable 類型,且該移動可以通過中間對象進行)
- indirectly_copyable(指定可從 indirectly_readable 類型復制值給 indirectly_writable 類型)
- indirectly_copyable_storable(指定可從 indirectly_readable 類型復制值給 indirectly_writable 類型,且該復制可以通過中間對象進行)
- indirectly_swappable(指定能交換兩個 indirectly_readable 類型所引用的值)
- indirectly_comparable(指定能比較兩個 indirectly_readable 類型所引用的值)
- permutable(指定在原位重排元素的算法的共用要求)
- mergeable(指定通過復制元素將已排序序列歸並到輸出序列中的算法的要求)
- sortable(指定重排序列為有序序列的算法的共用要求)
- indirect_result_t(計算在解引用某組 indirectly_readable 類型的結果上調用可調用對象的結果)
- projected(用於對接受投影的算法指定約束的輔助模板)
- move_sentinel(用於 std::move_iterator 的哨位適配器)
- common_iterator(適配一個迭代器類型及其哨位為一個公共迭代器類型)
- default_sentinel_t(用於知曉其邊界的迭代器的默認哨位)
- counted_iterator(對到范圍結尾距離進行跟蹤的迭代器適配器)
- unreachable_sentinel_t(始終與任何 weakly_incrementable 類型比較都不相等的哨位)
Defined in header
- ranges::advance(令迭代器前進給定的距離或到給定的邊界)
- ranges::distance(返回迭代器與哨位間的距離,或范圍起始與結尾間的距離)
- ranges::next(自增迭代器給定的距離或到邊界)
- ranges::prev(自減迭代器給定的距離或到邊界)
Defined in header <array>
Defined in header <deque>
Defined in header <forward_list>
Defined in header <iterator>
Defined in header <list>
Defined in header <map>
Defined in header <regex>
Defined in header <set>
Defined in header <span>
Defined in header <string>
Defined in header <string_view>
Defined in header <unordered_map>
Defined in header <unordered_set>
Defined in header <vector>
Defined in namespace std
Defined in header <ranges>
Defined in header <iterator>
Defined in namespace std::ranges
- ranges::begin(返回指向范圍起始的迭代器)
- ranges::cbegin(返回指向只讀范圍起始的迭代器)
- ranges::end(返回指示范圍結尾的哨位)
- ranges::cend(返回指示只讀范圍結尾的哨位)
- ranges::rbegin(返回指向范圍的逆向迭代器)
- ranges::crbegin(返回指向只讀范圍的逆向迭代器)
- ranges::rend(返回指向范圍的逆向尾迭代器)
- ranges::crend(返回指向只讀范圍的逆向尾迭代器)
- ranges::size(獲得能在常數時間內計算大小的范圍的大小)
- ranges::ssize(獲得能在常數時間內計算大小的范圍的大小,並將它轉換成有符號整數)
- ranges::empty(檢查范圍是否為空)
- ranges::data(獲得指向連續范圍的起始的指針)
- ranges::cdata(獲得指向只讀連續范圍的起始的指針)
C++23新特性
類型支持(基本類型、RTTI、類型特性)
Defined in header<type_traits>
Defined in header<utility>
Defined in header<stacktrace>
動態內存管理
Defined in header<memory>
- out_ptr_t(與外來指針設置器交互,並在析構時重設智能指針)
- out_ptr(以關聯的智能指針和重設參數創建 out_ptr_t)
- inout_ptr_t(與外來指針設置器交互,從智能指針獲得初始指針值,並在析構時重設它)
- inout_ptr(以關聯的智能指針和重設參數創建 inout_ptr_t)
- allocation_result(記錄由 allocate_at_least 分配的存儲的地址與實際大小)
- allocate_at_least(經由分配器分配至少與請求的大小一樣大的存儲)
字符串
Defined in header<string>
Defined in header<string_view>
=============== End