C++
 Computer >> コンピューター >  >> プログラミング >> C++

C++標準テンプレートライブラリ(STL)のpair(ペア)徹底解説

本チュートリアルでは、C++標準テンプレートライブラリ(STL)に含まれる pair の使い方について詳しく解説します。

pairは <utility> ヘッダーで定義されているコンテナの一種で、2つの値を格納することができます。異なるデータ型同士であっても、2つの値をひとつの組として結び付けて扱えるのが大きな特徴です。例えば、名前(文字列)と点数(整数)のように、型が異なるデータをまとめて管理したい場合に非常に便利です。

pairの基本構造

pairは firstsecond という2つの公開メンバ変数を持ち、それぞれ1つ目・2つ目の値に対応します。宣言時には次のように2つの型を指定します。

pair <型1, 型2> 変数名;

サンプルコード

#include <iostream>
#include <utility>
using namespace std;
int main(){
    // pairの初期化
    pair <int, char> PAIR1;
    PAIR1.first = 100;
    PAIR1.second = 'G';
    cout << PAIR1.first << " ";
    cout << PAIR1.second << endl;
    return 0;
}

実行結果

100 G

補足:pairの便利な初期化方法

上の例では宣言後にメンバへ直接代入していますが、以下のように初期化子や make_pair() 関数を使うと、より簡潔に記述できます。

// 初期化子リストを使用
pair <int, char> PAIR1 = {100, 'G'};

// make_pair() を使用
auto PAIR2 = make_pair(200, 'H');

このようにpairを活用することで、関連する2つの値を簡潔かつ安全に扱うことができ、mapなどの他のSTLコンテナと組み合わせた利用にも広く活躍します。

  1. C++ STLのスタック(stack)徹底解説!LIFO構造の基本操作とサンプルコード

    C++ STLにおけるスタック(stack)は、LIFO(Last In First Out:後入れ先出し)構造として実装されるコンテナです。LIFOとは「最後に入れたものが最初に取り出される」という意味で、本を一冊ずつ積み上げた山をイメージすると理解しやすいでしょう。一番上に置いた本(=最後に挿入された要素)が最初に取り出されることから、この構造はLIFOと呼ばれています。 スタックで使える主な操作 1. top() – 最上位要素の取得 スタックの最上位(先頭)にある要素への参照を返します。要素自体は削除されません。 構文:name_of_stack.top() 引数:なし 戻り値:ス

  2. C++ STL(標準テンプレートライブラリ)のプライオリティキュー徹底解説

    プライオリティキュー(優先度付きキュー)は、優先度を持つ要素のコレクションを格納するための抽象データ型(ADT)です。各要素は優先度に基づいて挿入・削除が行われ、最も優先度の高い要素はいつでも取り出すことができます。スタックやキュー、リストなどの線形データ構造とは異なり、プライオリティキューは要素を格納位置の順序ではなく、優先度に基づいて管理する点が大きな特徴です。C++では、STLの <queue> ヘッダで提供されており、デフォルトでは最大値が先頭に来る構造になっています。プライオリティキューがサポートする主な操作size() — プライオリティキュー内の要素数を返し、サイズを