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