コンテンツにスキップ

C++/標準ライブラリ/一般ユーティリティライブラリ

出典: フリー教科書『ウィキブックス(Wikibooks)』

22 General utilities library(utilities)

[編集]

この章では、C++プログラムで一般的に有用なユーティリティを説明します。これらのユーティリティの一部は、C++標準ライブラリの他の要素によって使用されます。これらのユーティリティはTable 57に要約されています。

Table 57: General utilities library summary(tab:utilities.summary)

[編集]
Table 57: General utilities library summary(tab:utilities.summary)
小節 ヘッダー
22.2 Utility components <utility>
22.3 Pairs
22.4 Tuples <tuple>
22.5 Optional objects <optional>
22.6 Variants <variant>
22.7 Storage for any type <any>
22.8 Expected objects <expected>
22.9 Fixed-size sequences of bits <bitset>
22.10 Function objects <functional>
22.11 Type indexes <typeindex>
22.12 Execution policies <execution>
22.13 Primitive numeric conversions <charconv>
22.14 Formatting <format>
22.15 Bit manipulation <bit>

22.1 General(utilities.general)

[編集]

この節では、C++プログラムで一般的に有用なユーティリティについて説明します。一部のユーティリティはC++標準ライブラリの他の要素によって使用されます。

22.2 Utility components(utility)

[編集]

この節では、以下のユーティリティコンポーネントについて説明します。

概要
<utility> ヘッダーには、様々なユーティリティ関数やクラスが含まれています。これらのユーティリティは、多くの一般的なタスクを簡素化するために設計されています。
主な機能
std::move
オブジェクトをムーブするためのユーティリティ。これにより、リソースの所有権を転送することができます。
std::forward
完璧な転送をサポートするためのユーティリティ。テンプレート関数で使用され、引数を適切に転送するのに役立ちます。
std::swap
2つのオブジェクトの値を交換します。
std::declval
型の宣言だけを行い、オブジェクトを生成せずに型情報を取得するためのユーティリティ。

22.3 Pairs

[編集]

ペア(2つの要素)を扱うためのクラステンプレートです。例えば、std::pair は2つの異なる型のオブジェクトを1つにまとめて扱うことができます。

22.4 Tuples <tuple>

[編集]

タプルは任意の数の異なる型のオブジェクトを1つにまとめて扱うことができるクラステンプレートです。タプルを使用することで、異なる型の複数の値を一度に返すことができます。

22.5 Optional objects <optional>

[編集]

オプショナルオブジェクトは、値を持つか持たないかを表現するためのクラステンプレートです。例えば、std::optional は、値が存在しない場合でも安全に扱うことができます。

22.6 Variants <variant>

[編集]

バリアントは複数の型のいずれか1つの値を持つことができる型安全なユニオンです。例えば、std::variant は異なる型の値を一つのオブジェクトとして扱うことができます。

22.7 Storage for any type <any>

[編集]

任意の型のオブジェクトを動的に保持するためのクラスです。std::any は、異なる型の値を一つのオブジェクトとして格納できます。

22.8 Expected objects <expected>

[編集]

値かエラーメッセージのいずれかを保持するためのクラステンプレートです。std::expected は、正常な結果とエラーを扱うために使用されます。

22.9 Fixed-size sequences of bits <bitset>

[編集]

固定サイズのビット列を扱うためのクラスです。std::bitset は、ビット単位の操作を効率的に行うことができます。

22.10 Function objects <functional>

[編集]

関数オブジェクト、関数ポインタ、ラムダ式などを扱うためのユーティリティが含まれています。std::function は、関数呼び出しを抽象化するために使用されます。

22.11 Type indexes <typeindex>

[編集]

実行時に型情報を取得するためのクラスです。std::type_index は、型情報の比較やハッシュ化に使用されます。

22.12 Execution policies <execution>

[編集]

並列処理やベクトル化を制御するための実行ポリシーを提供します。例えば、std::execution::parstd::execution::seq などがあります。

22.13 Primitive numeric conversions <charconv>

[編集]

文字列と数値の間の変換を効率的に行うためのユーティリティです。std::from_charsstd::to_chars は、文字列と数値間の変換に使用されます。

22.14 Formatting <format>

[編集]

文字列のフォーマットをサポートするためのユーティリティです。std::format は、指定された形式に従って文字列を整形します。

22.15 Bit manipulation <bit>

[編集]

ビット操作を行うためのユーティリティが含まれています。例えば、ビットシフトやビットマスクなどの操作を効率的に行うことができます。