Namespaces
Variants

std::pair

ja.cppreference.net より
 
 
ユーティリティライブラリ
言語サポート
型サポート (基本型、RTTI)
ライブラリ機能テストマクロ (C++20)
プログラムユーティリティ
可変個引数関数
コルーチンサポート (C++20)
契約サポート (C++26)
三方比較
(C++20)
(C++20)(C++20)(C++20)    
(C++20)(C++20)(C++20)

汎用ユーティリティ
関係演算子 (C++20で非推奨)
整数比較関数
(C++20)(C++20)(C++20)    
(C++20)
swap と 型操作
(C++14)
(C++11)
(C++11)
(C++11)
(C++17)
一般的なボキャブラリ型
(C++11)
(C++17)
(C++17)
(C++17)
(C++11)
(C++17)
(C++23)



 
 
ヘッダ <utility>
template<
    class T1,
    class T2
> struct pair;

std::pair で定義されます。std::pair は、2つの異種オブジェクトを単一のユニットとして格納する方法を提供するクラステンプレートです。pair は、2つの要素を持つ std::tuple の特定のケースです。

もし T1 と T2 のいずれも、非トリビアルなデストラクタを持つ可能性のある cv 修飾されたクラス型またはその配列でない場合、pair のデストラクタはトリビアルです。

テンプレートパラメータ

T1, T2 - ペアが格納する要素の型。

メンバー型

メンバー型 定義
first_type T1
second_type T2

メンバーオブジェクト

メンバー名 型
first T1
second T2

メンバー関数

新しい pair を構築する
(public member function)
内容を代入する
(public member function)
(C++11)
内容を交換する
(public member function)

非メンバー関数

引数の型によって決定される型の pair オブジェクトを作成する
(関数テンプレート)
(C++20で削除) (C++20で削除) (C++20で削除) (C++20で削除) (C++20で削除) (C++20)
pair 内の値を辞書順で比較する
(関数テンプレート)
std::swap アルゴリズムを特殊化する
(関数テンプレート)
pair の要素にアクセスする
(関数テンプレート)

ヘルパークラス

pairのサイズを取得する
(クラステンプレートの特殊化)
pairの要素の型を取得する
(クラステンプレートの特殊化)
2つのpairの共通参照型を決定する
(クラステンプレートの特殊化)
2つのpairの共通型を決定する
(クラステンプレートの特殊化)
pairのフォーマットサポート
(クラステンプレートの特殊化)

ヘルパー特殊化

template < class T, class U >

constexpr bool enable_nonlocking_formatter_optimization < std :: pair < T, U >> =
enable_nonlocking_formatter_optimization < T > &&

enable_nonlocking_formatter_optimization < U > ;
(C++23以降)

この std::enable_nonlocking_formatter_optimization の特殊化は、 std::print および std::println が pair オブジェクトを出力する際の効率的な実装を可能にします。これは T と U の両方がこれを有効にしている場合に適用されます。

推論ガイド (C++17以降)

欠陥報告

以下の動作変更の欠陥報告書は、以前に公開されたC++規格に対して遡及的に適用されました。

DR 適用対象 公開時の動作 正しい動作
LWG 2796 C++98 pairのデストラクタの自明性が未規定 規定済み

関連項目

(C++11)
異なる型の要素を保持する固定サイズのコンテナを実装する
(クラステンプレート)
(C++11)
左辺値参照の tuple を作成する、またはtupleを個々のオブジェクトに展開する
(関数テンプレート)