Utility library
C++は、 ビットカウント から 部分関数適用 まで多岐にわたる機能を提供する様々なユーティリティライブラリを含んでいます。これらのライブラリは大まかに2つのグループに分類できます:
- 言語サポートライブラリ、および
- 汎用ライブラリ。
目次 |
言語サポート
言語サポートライブラリは、言語機能と密接に連携し、一般的な言語イディオムをサポートするクラスと関数を提供します。
実装特性 (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つの演算子をサポートし、置換可能ではなく、比較不能な値を許容する3方向比較の結果型
(クラス) |
|
(C++20)
|
すべての6つの演算子をサポートし、置換可能ではない3方向比較の結果型
(クラス) |
|
(C++20)
|
すべての6つの演算子をサポートし、置換可能な3方向比較の結果型
(クラス) |
|
名前付き比較関数
(関数) |
|
|
(C++20)
|
x
<=>
y
を実装する制約付き関数オブジェクト
(クラス) |
|
(C++20)
|
指定された型に対する3方向比較演算子
<=>
の結果型を取得する
(クラステンプレート) |
|
(C++20)
|
すべての指定された型が変換可能な最も強い比較カテゴリ
(クラステンプレート) |
|
(C++20)
|
3方向比較を実行し、型
std::strong_ordering
の結果を生成する
(カスタマイゼーションポイントオブジェクト) |
|
(C++20)
|
3方向比較を実行し、型
std::weak_ordering
の結果を生成する
(カスタマイゼーションポイントオブジェクト) |
|
(C++20)
|
3方向比較を実行し、型
std::partial_ordering
の結果を生成する
(カスタマイゼーションポイントオブジェクト) |
|
(C++20)
|
3方向比較を実行し、型
std::strong_ordering
の結果を生成する(
operator
<=>
が利用できない場合でも)
(カスタマイゼーションポイントオブジェクト) |
|
(C++20)
|
3方向比較を実行し、型
std::weak_ordering
の結果を生成する(
operator
<=>
が利用できない場合でも)
(カスタマイゼーションポイントオブジェクト) |
|
(C++20)
|
3方向比較を実行し、型
std::partial_ordering
の結果を生成する(
operator
<=>
が利用できない場合でも)
(カスタマイゼーションポイントオブジェクト) |
コルーチンサポート (C++20以降)
コルーチン サポートのための型(例: std::coroutine_traits 、 std::coroutine_handle )。
契約サポート (C++26以降)
契約サポートのための型(例: 契約 、例えば std::contracts::contract_violation )。
汎用ユーティリティ
スワップ
|
ヘッダーで定義
<utility>
|
|
|
2つのオブジェクトの値を交換する
(関数テンプレート) |
|
|
(C++14)
|
引数を新しい値で置き換え、以前の値を返す
(関数テンプレート) |
|
ヘッダーで定義
<concepts>
|
|
|
(C++20)
|
2つのオブジェクトの値を交換する
(カスタマイゼーションポイントオブジェクト) |
型操作 (C++11以降)
|
定義済みヘッダー
<utility>
|
|
|
(C++11)
|
関数引数を転送し、テンプレート引数の型を使用して値カテゴリを保持する
(関数テンプレート) |
|
(C++23)
|
指定された型テンプレート引数の式の値カテゴリとconst性にキャストするかのように関数引数を転送する
(関数テンプレート) |
|
(C++11)
|
引数をxvalueに変換する
(関数テンプレート) |
|
(C++11)
|
ムーブコンストラクタが例外を投げない場合に引数をxvalueに変換する
(関数テンプレート) |
|
(C++17)
|
引数への
const
参照を取得する
(関数テンプレート) |
|
(C++11)
|
未評価コンテキストで使用するためのテンプレート型引数のオブジェクトへの参照を取得する
(関数テンプレート) |
|
(C++23)
|
列挙型をその基盤となる型に変換する
(関数テンプレート) |
整数比較関数 (since C++20)
|
定義済みヘッダ
<utility>
|
|
|
2つの整数値を比較し、符号付き負数が符号なし数より小さいことを保証する
(関数テンプレート) |
|
|
(C++20)
|
整数値が指定された整数型の範囲内にあるかどうかをチェックする
(関数テンプレート) |
関係演算子 (C++20まで)
|
ヘッダーで定義
<utility>
|
|
|
名前空間で定義
std::rel_ops
|
|
|
(C++20で非推奨)
|
ユーザー定義の
operator
==
と
operator
<
に基づいて比較演算子を自動生成
(関数テンプレート) |
(注:指定されたテキストブロック内に翻訳対象となる実際のテキストコンテンツが存在しないため、HTML構造のみを保持した状態で出力しています。「Construction_tags」はID属性値であるため、翻訳対象外として維持されています)
構築タグ (since 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)
|
型安全な判別共用体
(クラステンプレート) |
|
定義ヘッダ
<any>
|
|
|
(C++17)
|
CopyConstructible
要件を満たす任意の型のインスタンスを保持するオブジェクト
(クラス) |
ビットセット
|
定義済みヘッダー
<bitset>
|
|
|
固定長ビット配列を実装
(クラステンプレート) |
|
ビット操作 (C++20以降)
ヘッダー <bit> は、個々のビットとビットシーケンスにアクセス、操作、処理するためのいくつかの関数テンプレートを提供します。スカラ型のバイト順序( エンディアン )は、 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)
|
ハッシュ関数オブジェクト
(クラステンプレート) |
関連項目
|
C documentation
for
Utility library
|