名前空間
変種
操作

ユーティリティライブラリ

From cppreference.com
< cpp
 
 
ユーティリティライブラリ
言語サポート
型のサポート (基本型、RTTI)
ライブラリ機能検査マクロ (C++20)
プログラムユーティリティ
可変引数関数
コルーチンサポート (C++20)
契約サポート (C++26)
三方比較
(C++20)
(C++20)(C++20)(C++20)  
(C++20)(C++20)(C++20)

汎用ユーティリティ
関係演算子 (C++20で非推奨)
 

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++20以降)

ヘッダ <source_location> で定義
ファイル名、行番号、関数名などのソースコードに関する情報を表すクラス
(クラス) [編集]

[編集] 三方比較 (C++20以降)

ヘッダ <compare> で定義
演算子<=>が与えられた型に対して一貫した結果を生成することを規定する
(コンセプト) [編集]
6つすべての演算子をサポートし、置換可能ではなく、比較不可能な値を許容する三方比較の結果型
(クラス) [編集]
6つすべての演算子をサポートし、置換可能ではない三方比較の結果型
(クラス) [編集]
6つすべての演算子をサポートし、置換可能である三方比較の結果型
(クラス) [編集]
名前付き比較関数
(関数) [編集]
x <=> y を実装する制約付き関数オブジェクト
(クラス) [編集]
与えられた型に対する三方比較演算子 <=> の結果型を取得する
(クラステンプレート) [編集]
与えられたすべての型が変換可能な、最も強い比較カテゴリ
(クラステンプレート) [編集]
三方比較を行い、std::strong_ordering 型の結果を生成する
(カスタマイゼーションポイントオブジェクト)[編集]
三方比較を行い、std::weak_ordering 型の結果を生成する
(カスタマイゼーションポイントオブジェクト)[編集]
三方比較を行い、std::partial_ordering 型の結果を生成する
(カスタマイゼーションポイントオブジェクト)[編集]
operator<=> が利用できなくても、三方比較を行い std::strong_ordering 型の結果を生成する
(カスタマイゼーションポイントオブジェクト)[編集]
operator<=> が利用できなくても、三方比較を行い std::weak_ordering 型の結果を生成する
(カスタマイゼーションポイントオブジェクト)[編集]
operator<=> が利用できなくても、三方比較を行い std::partial_ordering 型の結果を生成する
(カスタマイゼーションポイントオブジェクト)[編集]

[編集] コルーチンサポート (C++20以降)

コルーチンサポートのための型(例: std::coroutine_traits, std::coroutine_handle)。

[編集] 契約サポート (C++26以降)

契約サポートのための型(例: std::contracts::contract_violation)。

[編集] 汎用ユーティリティ

[編集] スワップ

ヘッダ <utility> で定義
2つのオブジェクトの値を交換する
(関数テンプレート) [編集]
(C++14)
引数を新しい値で置き換え、その前の値を返す
(関数テンプレート) [編集]
ヘッダ <concepts> で定義
2つのオブジェクトの値を交換する
(カスタマイゼーションポイントオブジェクト)[編集]

[編集] 型操作 (C++11以降)

ヘッダ <utility> で定義
(C++11)
関数引数を転送し、型テンプレート引数を使用してその値カテゴリを維持する
(関数テンプレート) [編集]
指定された型テンプレート引数の式の値カテゴリとconst性にキャストするかのように関数引数を転送する
(関数テンプレート) [編集]
(C++11)
引数をxvalueに変換する
(関数テンプレート) [編集]
ムーブコンストラクタが例外を投げない場合に引数をxvalueに変換する
(関数テンプレート) [編集]
(C++17)
引数への const 参照を取得する
(関数テンプレート) [編集]
(C++11)
評価されない文脈で使用するために、テンプレート型引数のオブジェクトへの参照を取得する
(関数テンプレート) [編集]
列挙型をその基底となる型に変換する
(関数テンプレート) [編集]

[編集] 整数比較関数 (C++20以降)

ヘッダ <utility> で定義
2つの整数値を比較し、符号付き負数が符号なし数より小さいことを保証する
(関数テンプレート) [編集]
(C++20)
整数値が指定された整数型の範囲内にあるかを確認する
(関数テンプレート) [編集]

[編集] 関係演算子 (C++20まで)

ヘッダ <utility> で定義
名前空間 std::rel_ops で定義
ユーザー定義の operator==operator< に基づいて比較演算子を自動的に生成する
(関数テンプレート) [編集]

[編集] 構築タグ (C++11以降)

ヘッダ <utility> で定義
ピースワイズ構築タグ
(タグ)[編集]
インプレース構築タグ
(タグ)[編集]
値構築タグ
(タグ)[編集]

[編集] ペアタプル

ヘッダ <utility> で定義
二項タプル、つまり値のペアを実装する
(クラステンプレート) [編集]
ヘッダ <tuple> で定義
(C++11)
異なる型の要素を保持できる固定サイズのコンテナを実装する
(クラステンプレート) [編集]
(C++17)
引数のタプルを使って関数を呼び出す
(関数テンプレート) [編集]
引数のタプルを使ってオブジェクトを構築する
(関数テンプレート) [編集]
タプルプロトコル (C++11以降)
ヘッダ <tuple> で定義
ヘッダ <utility> で定義
ヘッダー <array> で定義
ヘッダ <ranges> で定義
ヘッダ <complex> で定義
タプルライクな型の要素数を取得する
(クラステンプレート) [編集]
タプルライクな型の要素型を取得する
(クラステンプレート) [編集]

[編集] 和集合型と型消去ラッパー (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::refstd::placeholders のような束縛ユーティリティ、多態的な関数ラッパー: std::function、定義済みのファンクタ(例: std::plus, std::equal_to)、メンバへのポインタを関数に変換する std::mem_fn

[編集] ハッシュサポート (C++11以降)

ヘッダ <functional> で定義
(C++11)
ハッシュ関数オブジェクト
(クラステンプレート) [編集]

[編集] 関連項目

ユーティリティライブラリC言語ドキュメント
English 日本語 中文(简体) 中文(繁體)