ユーティリティライブラリ - cppreference.com
提供: cppreference.com
C++ には、ビット計数から関数の部分適用まで、広範な機能を提供する様々なユーティリティライブラリがあります。 これらのライブラリは大まかに以下の2つのグループに分類できます。
- 言語サポートライブラリ
- 汎用ライブラリ
言語サポート
言語サポートライブラリは言語機能に密に結び付いていたり一般的な言語のイディオムをサポートするクラスや関数を提供します。
型サポート
基本型 (std::size_t, std::nullptr_t など)、 RTTI (std::type_info など)、型特性 (std::is_integral, std::rank など)。
処理系の性質
プログラムユーティリティ
終了 (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 など)。
ソースコード情報のキャプチャ
初期化子リスト
三方比較
ヘッダ | |
指定された型に対して演算子 <=> が一貫した結果を生成することを指定します (コンセプト) [edit] | |
(C++20) |
6種類の演算子をすべてサポートし、代用可能でなく、比較不可能な値を許容する、三方比較の結果の型 (クラス) [edit] |
(C++20) |
6種類の演算子をすべてサポートする代用可能でない三方比較の結果の型 (クラス) [edit] |
(C++20) |
6種類の演算子をすべてサポートする代用可能な三方比較の結果の型 (クラス) [edit] |
| 名前付きの比較関数 (関数) [edit] | |
(C++20) |
x <=> y を実装する関数オブジェクト (クラス) [edit] |
(C++20) |
指定された型に対する三方比較演算子 <=> の結果の型を取得します (クラステンプレート) [edit] |
(C++20) |
指定されたすべての型が変換可能な最も強い比較カテゴリ (クラステンプレート) [edit] |
(C++20) |
三方比較を行い、 std::strong_ordering 型の結果を生成します (カスタマイゼーションポイントオブジェクト) [edit] |
(C++20) |
三方比較を行い、 std::weak_ordering 型の結果を生成します (カスタマイゼーションポイントオブジェクト) [edit] |
(C++20) |
三方比較を行い、 std::partial_ordering 型の結果を生成します (カスタマイゼーションポイントオブジェクト) [edit] |
三方比較を行い、 std::strong_ordering 型の結果を生成します (operator<=> が利用できない場合でも) (カスタマイゼーションポイントオブジェクト) [edit] | |
(C++20) |
三方比較を行い、 std::weak_ordering 型の結果を生成します (operator<=> が利用できない場合でも) (カスタマイゼーションポイントオブジェクト) [edit] |
三方比較を行い、 std::partial_ordering 型の結果を生成します (operator<=> が利用できない場合でも) (カスタマイゼーションポイントオブジェクト) [edit] | |
コルーチンサポート
可変長引数関数
任意の個数の引数を取る関数に対するサポート (va_start, va_arg, va_end など)。
汎用ユーティリティ
スワップと型操作
ヘッダ | |
| 2つのオブジェクトの値を入れ替えます (関数テンプレート) [edit] | |
(C++14) |
引数を新しい値で置き換え、その以前の値を返します (関数テンプレート) [edit] |
(C++11) |
関数の引数を転送します (関数テンプレート) [edit] |
(C++11) |
右辺値参照を取得します (関数テンプレート) [edit] |
(C++11) |
ムーブコンストラクタが例外を投げない場合、右辺値参照を取得します (関数テンプレート) [edit] |
(C++17) |
引数への const な参照を取得します (関数テンプレート) [edit] |
(C++11) |
未評価文脈で使用するための引数への参照を取得します (関数テンプレート) [edit] |
ヘッダ | |
(C++20) |
2つのオブジェクトの値を入れ替えます (カスタマイゼーションポイントオブジェクト) [edit] |
整数比較関数
関係演算子
ペアとタプル
ヘッダ | |
| 2つ組、つまり2つの値のペアを実装します (クラステンプレート) [edit] | |
(C++11) |
区分的構築用の関数オーバーロードを正しく選択するために使用されるタグ型 (クラス) [edit] |
(C++11) |
区分的構築用の関数を曖昧さなく選択するために使用される piecewise_construct_t 型のオブジェクト (定数) [edit] |
(C++14) |
コンパイル時整数列を実装します (クラステンプレート) [edit] |
ヘッダ | |
(C++11) |
異なる型の混在できる複数の要素を格納する固定サイズのコンテナを実装します (クラステンプレート) [edit] |
(C++17) |
タプルを引数として使用して関数を呼びます (関数テンプレート) [edit] |
(C++17) |
タプルを引数として使用してオブジェクトを構築します (関数テンプレート) [edit] |
オプショナル、バリアント、エニー
ヘッダ | |
(C++17) |
値を保持するかもしれないし保持しないかもしれないラッパー (クラステンプレート) [edit] |
ヘッダ | |
(C++17) |
型安全な共用体 (クラステンプレート) [edit] |
ヘッダ | |
(C++17) |
CopyConstructible な型の任意のインスタンスを保持するオブジェクト (クラス) [edit] |
ヘッダ | |
| その場構築のタグ (クラステンプレート) [edit] | |
ビット集合
関数オブジェクト
関数の部分適用 (std::bind など) および関連するユーティリティ: std::ref や std::placeholders などバインディングのためのユーティリティ、多相的な関数ラッパー: std::function、定義済みの関数オブジェクト (std::plus, std::equal_to など)、メソッドの関数への変換 (std::mem_fn)。
ハッシュサポート
ヘッダ | |
| ハッシュ関数オブジェクト (クラステンプレート) [edit] | |
日付と時間
時間追跡 (std::chrono::time_point, std::chrono::duration など)、 C スタイルの日付と時間 (std::time, std::clock など)。
初等文字列変換
C++ の入出力ライブラリ、 C の入出力ライブラリ、 C++ の文字列変換関数、 C の文字列変換関数によって提供されているローケル依存の洗練されたパーサおよびフォーマッタに加えて、軽量な、ロケール非依存の、メモリ確保を行わない、例外を投げない、算術型に対するパーサおよびフォーマッタが、ヘッダ <charconv> によって提供されます。
書式化ライブラリ
|
型安全な文字列の書式化のための機能 (std::format、 std::format_to など)。 |
(C++20以上) |