名前空間
変種
操作

std::pair

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

汎用ユーティリティ
関係演算子 (C++20で非推奨)
 
 
ヘッダ <utility> で定義
template<

    class T1,
    class T2

> struct pair;

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

T1T2のどちらも、自明でないデストラクタを持つ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内の値を辞書式比較する
(関数テンプレート) [編集]
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の特殊化は、TUの両方がそれを有効にしている場合に、pairオブジェクトを印字するためのstd::printstd::printlnの効率的な実装を有効にします。

[編集] 推論ガイド(C++17以降)

[編集] 欠陥報告

以下の動作変更を伴う欠陥報告が、以前に公開されたC++標準に遡って適用されました。

DR 適用対象 公開された動作 正しい動作
LWG 2796 C++98 pairのデストラクタの自明性が規定されていなかった 指定された

[編集] 関連項目

(C++11)
異なる型の要素を保持できる固定サイズのコンテナを実装する
(クラステンプレート) [編集]
(C++11)
左辺値参照のtupleを生成するか、タプルを個別のオブジェクトにアンパックする
(関数テンプレート) [編集]
English 日本語 中文(简体) 中文(繁體)