【C++】std::pair の使い方 | 2つの値をペアで扱う方法

目次

はじめに

C++でプログラミングをしていると、「キーと値」「姓と名」「x座標とy座標」のように、常に対(ペア)で扱いたい2つのデータが出てくることがあります。この目的のために、C++の標準ライブラリ <utility> には、std::pair という便利なクラステンプレートが用意されています。

std::pair を使えば、2つの値を一つの変数として、関数の引数や戻り値、コンテナの要素として手軽に扱うことができます。特に std::map の要素は、内部的に std::pair として格納されています。

この記事では、std::pair の基本的な使い方(生成、値の変更、要素へのアクセス)を解説します。


std::pair を使ったサンプルコード

このコードは、int(ID)と string(名前)をペアで保持する pair を作成し、その値を変更したり、個々の要素を取り出して表示したりする方法を示します。

完成コード

#include <iostream>
#include <utility> // pair, make_pair を使うために必要
#include <string>

using namespace std;

int main() {
    // 1. pairの生成 (コンストラクタで初期化)
    pair<int, string> user_data(101, "佐藤");

    // 2. .first と .second で各要素にアクセス
    cout << "--- 初期値 ---" << endl;
    cout << "ID: " << user_data.first << endl;
    cout << "名前: " << user_data.second << endl;

    // 3. make_pairで新しいpairを作成し、代入
    user_data = make_pair(202, "鈴木");

    cout << "\n--- 値を変更後 ---" << endl;
    cout << "ID: " << user_data.first << endl;
    cout << "名前: " << user_data.second << endl;
    
    // C++17以降の構造化束縛を使うと、より便利に分解できる
    auto [id, name] = user_data;
    cout << "\n--- 構造化束縛 ---" << endl;
    cout << "ID: " << id << ", 名前: " << name << endl;

    return 0;
}

コードの解説

1. pair の生成

pair<int, string> user_data(101, "佐藤");

  • std::pair を使うには、< > の中に、ペアにしたい2つのデータ型を順番に指定します。
  • コンストラクタの引数に、それらの型に対応する初期値を渡すことで、オブジェクトを生成できます。

2. std::make_pair

user_data = make_pair(202, "鈴木");

  • std::make_pair は、引数として渡された2つの値から、対応する型の pair オブジェクトを自動で生成して返すヘルパー関数です。
  • pair<int, string> p = {202, "鈴木"}; のように、初期化子リストを使うこともできます。

3. 要素へのアクセス (.first, .second)

pair の各要素にアクセスするには、メンバ変数 .first.second を使います。

  • .first: 1番目の要素にアクセスします。
  • .second: 2番目の要素にアクセスします。

まとめ

今回は、C++の std::pair を使って、2つの値を一つのオブジェクトにまとめる方法を解説しました。

  • std::pair<T1, T2> で、2つの型のペアを定義できる。
  • std::make_pair で、値から簡単に pair を生成できる。
  • .first.second で、それぞれの要素にアクセスする。

pair は、std::map のキーと値のペアを表現したり、関数から2つの値を返したい(例: 結果とエラーコード)場合など、様々な場面で活用できる基本的なデータ構造です。

副業から独立まで「稼げる」Webスキルを習得する(PR)

ここまで読んでいただきありがとうございます。 最後に宣伝をさせてください。

「副業を始めたいが、何から手をつければいいかわからない」「独学でスキルはついたが、収益化できていない」という悩みを持つ方には、マンツーマン指導のWebスクール**「メイカラ」**が適しています。

このスクールは、単に技術を教えるだけでなく、**「副業として具体的にどう稼ぐか」**という実務直結のノウハウ提供に特化している点が特徴です。

講師陣は、実際に「副業Webライターから1年で独立して月収100万円」を達成したプロや、現役で利益を出し続けているブロガーなど、確かな実績を持つプレイヤーのみで構成されています。そのため、机上の空論ではない、現場で通用する戦術を学ぶことができます。

副業に特化した強み

  • 最短ルートの提示: 未経験からでも実績を出せるよう、マンツーマンで指導。
  • AI活用の習得: 副業の時間対効果を最大化するための、正しいAI活用スキルも網羅。
  • 案件獲得のチャンス: 運営がWebマーケティング会社であるため、実力次第で社内案件の紹介など、仕事に直結する可能性があります。

受講者の多くは、「在宅でできる仕事を探している」「副業を頑張りたい」という20代・30代・40代が中心です。

受講前には、講師による無料説明が行われます。無理な勧誘はなく、自分に合った副業スタイルやプランを相談できるため、まずは話を聞いてみることから始めてみてはいかがでしょうか。

ブログで稼ぎたいなら「メイカラ」

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

私が勉強したこと、実践したこと、してることを書いているブログです。
主に資産運用について書いていたのですが、
最近はプログラミングに興味があるので、今はそればっかりです。

目次