std::pair
From cppreference.com
| ヘッダ <utility> で定義 |
||
| template< class T1, |
||
std::pairは、2つの異種オブジェクトを単一のユニットとして格納する方法を提供するクラステンプレートです。pairは、2つの要素を持つstd::tupleの特殊なケースです。
T1とT2のどちらも、自明でないデストラクタを持つcv修飾されうるクラス型またはその配列でない場合、pairのデストラクタは自明(trivial)です。
目次 |
[編集] テンプレートパラメータ
| T1, T2 | - | pairが格納する要素の型。 |
[編集] メンバ型
| メンバ型 | 定義 |
first_type
|
T1
|
second_type
|
T2
|
[編集] メンバオブジェクト
| メンバ名 | 型 |
first
|
T1
|
second
|
T2
|
[編集] メンバ関数
新しいpairを構築する(publicメンバ関数) | |
| 内容を代入する (publicメンバ関数) | |
| (C++11) |
内容を交換する (publicメンバ関数) |
[編集] 非メンバ関数
引数の型によって決定される型のpairオブジェクトを生成する(関数テンプレート) | |
| (C++20で削除)(C++20で削除)(C++20で削除)(C++20で削除)(C++20で削除)(C++20) |
pair内の値を辞書式比較する(関数テンプレート) |
| (C++11) |
std::swap アルゴリズムを特殊化する (関数テンプレート) |
| (C++11) |
pairの要素にアクセスする(関数テンプレート) |
[編集] ヘルパークラス
| (C++11) |
pairのサイズを取得する(クラステンプレート特殊化) |
pairの要素の型を取得する(クラステンプレート特殊化) | |
2つのpairの共通参照型を決定する(クラステンプレート特殊化) | |
| (C++23) |
2つのpairの共通型を決定する(クラステンプレート特殊化) |
| (C++23) |
pairの書式設定サポート(クラステンプレート特殊化) |
[編集] ヘルパー特殊化
| template< class T, class U > constexpr bool enable_nonlocking_formatter_optimization<std::pair<T, U>> = |
(C++23から) | |
このstd::enable_nonlocking_formatter_optimizationの特殊化は、TとUの両方がそれを有効にしている場合に、pairオブジェクトを印字するためのstd::printとstd::printlnの効率的な実装を有効にします。
[編集] 推論ガイド(C++17以降)
[編集] 欠陥報告
以下の動作変更を伴う欠陥報告が、以前に公開されたC++標準に遡って適用されました。
| DR | 適用対象 | 公開された動作 | 正しい動作 |
|---|---|---|---|
| LWG 2796 | C++98 | pairのデストラクタの自明性が規定されていなかった |
指定された |
[編集] 関連項目
| (C++11) |
異なる型の要素を保持できる固定サイズのコンテナを実装する (クラステンプレート) |
| (C++11) |
左辺値参照のtupleを生成するか、タプルを個別のオブジェクトにアンパックする (関数テンプレート) |