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

C++のSTLでpair(ペア)を実装するプログラム


pair(ペア)は、2つのデータオブジェクトで構成されるシンプルなコンテナです。C++では <utility> ヘッダに定義されており、異なる型同士の値をひとつの単位としてまとめて扱うことができます。

'first'  = 1つ目の要素。「first」として参照される
'second' = 2つ目の要素。要素の順序は固定(first → second)

pairは代入・比較・コピーが可能です。型の異なる2つの値を組み合わせて保持したい場合に便利で、関数から2つの戻り値を返したいときや、キーと値のペアを扱う場面などでよく利用されます。

構文: pair<データ型1, データ型2> 変数名(値1, 値2);

アルゴリズム

手順開始
   pair<データ型1, データ型2> 変数名(値1, 値2) を宣言する
   各ペアの内容を出力する
終了

サンプルコード

#include<iostream>
using namespace std;
int main() {
   pair <char,int> value('a',7);
   pair <string,double> fruit ("grapes",2.30);
   pair <string,double> food ("pulao",200);
   cout<<"The value of "<<value.first<<" is "<<value.second <<endl;
   cout<<"The price of "<<fruit.first<<" is Rs. "<<fruit.second <<endl;
   cout<<"The price of "<<food.first<<" is Rs. "<<food.second <<endl;
   return 0;
}

この例では、char 型と int 型を組み合わせたペア、および string 型と double 型を組み合わせたペアを作成し、firstsecond メンバを使ってそれぞれの要素にアクセスしています。

出力結果

The value of a is 7
The price of grapes is Rs. 2.3
The price of pulao is Rs. 200

このように、pairを使うことで異なる型の値を簡単にグループ化でき、コードの可読性も向上します。なお、明示的に型を指定せずにペアを作成したい場合は、make_pair() 関数を使用すると型推論によって自動的に決定されます。

  1. C++のSTLでset_intersectionを実装し、2つの集合の積集合を求める方法

    2つの集合の積集合(インターセクション)とは、両方の集合に共通して含まれる要素だけを集めたものです。set_intersection関数によってコピーされる要素は、必ず最初の集合から取り出され、元の順序がそのまま維持されます。また、この関数を正しく動作させるためには、処理前に両方の集合がそれぞれソート済みである必要があります。 集合に対する代表的な操作には、以下のようなものがあります。 和集合(ユニオン) 積集合(インターセクション) 対称差(排他的論理和・XOR) 差集合(減算) アルゴリズム Begin   結果を格納するvector型変数vとイテレータstを宣言する。   st =

  2. 【C++】STLのset_differenceを使って2つの集合の差分を求める方法

    2つの集合の「差(差集合)」とは、1つ目の集合には存在するが、2つ目の集合には存在しない要素だけから構成される集合のことです。set_difference関数によってコピーされる要素は、必ず1つ目の集合から取り出され、元の順序が保たれます。また、この関数を正しく動作させるためには、両方の集合があらかじめソート(整列)されている必要があります。代表的な集合演算には以下のようなものがあります。和集合(Union)積集合(Intersection)対称差(Symmetric Difference / 排他的論理和)差集合(Difference / 減算)アルゴリズムBegin 集合用のvec