pairの基本的な使い方
C++のpairは、2つの値を一組として扱うための便利なクラスです。pair<int, int>は、2つの整数を一組として扱います。
宣言と初期化
pair<int, int>の宣言と初期化は以下のように行います。
std::pair<int, int> p1; // デフォルトコンストラクタで初期化
std::pair<int, int> p2(3, 4); // 値を指定して初期化
値のアクセス
pairの各要素には、firstとsecondメンバを通じてアクセスします。
int a = p2.first; // aは3になる
int b = p2.second; // bは4になる
値の変更
firstとsecondメンバは変更可能です。
p2.first = 5; // p2は(5, 4)になる
p2.second = 6; // p2は(5, 6)になる
これらの基本的な使い方を理解すれば、pair<int, int>を効果的に使用することができます。次のセクションでは、pair<int, int>のメンバ関数とその使用例について詳しく説明します。
pairのメンバ関数とその使用例
C++のpairクラスは、2つの値を一組として扱うための便利なクラスです。pair<int, int>は、2つの整数を一組として扱います。ここでは、pair<int, int>の主なメンバ関数とその使用例について説明します。
swap関数
pairクラスのswap関数は、2つのpairオブジェクトの値を交換します。
std::pair<int, int> p1(1, 2);
std::pair<int, int> p2(3, 4);
p1.swap(p2); // p1は(3, 4)に、p2は(1, 2)になる
make_pair関数
make_pair関数は、2つの値からpairオブジェクトを作成します。この関数はテンプレート関数であり、引数の型から自動的にpairの型を推定します。
auto p = std::make_pair(5, 6); // pはpair<int, int>型で、値は(5, 6)
比較演算子
pairクラスは、==, !=, <, <=, >, >=の比較演算子をサポートしています。これらの演算子は、firstメンバを優先して比較します。
std::pair<int, int> p1(1, 2);
std::pair<int, int> p2(1, 3);
bool b1 = (p1 == p2); // b1はfalse
bool b2 = (p1 < p2); // b2はtrue
これらのメンバ関数と演算子を使うことで、pair<int, int>をより効果的に使用することができます。次のセクションでは、pair<int, int>と他のデータ構造との相互作用について詳しく説明します。
pairと他のデータ構造との相互作用
C++のpair<int, int>は、他のデータ構造とも相互作用することができます。ここでは、pair<int, int>とvector、mapとの相互作用について説明します。
vector<pair\>
pair<int, int>のvectorは、一連のペアを格納するために使用されます。これは、2つの関連する値のリストを保持する場合に特に便利です。
std::vector<std::pair<int, int>> v;
v.push_back(std::make_pair(1, 2));
v.push_back(std::make_pair(3, 4));
map
mapは、キーと値のペアを格納するためのデータ構造です。map<int, int>は、整数のキーと整数の値を持つマップです。
std::map<int, int> m;
m.insert(std::make_pair(1, 2));
m.insert(std::make_pair(3, 4));
pairと他のデータ構造との相互作用の例
pair<int, int>は、他のデータ構造と組み合わせて、より複雑なデータ構造を作成することができます。例えば、map<int, pair<int, int>>は、整数のキーとpair<int, int>の値を持つマップです。
std::map<int, std::pair<int, int>> m;
m.insert(std::make_pair(1, std::make_pair(2, 3)));
m.insert(std::make_pair(4, std::make_pair(5, 6)));
これらの例から、pair<int, int>が他のデータ構造とどのように相互作用するかを理解することができます。次のセクションでは、pair<int, int>の応用例について詳しく説明します。
pairの応用例
C++のpair<int, int>は、多くの応用例があります。ここでは、その中からいくつかの例を紹介します。
座標の表現
pair<int, int>は、2次元座標を表現するのに便利です。firstとsecondをそれぞれx座標とy座標として使用します。
std::pair<int, int> point(3, 4); // (x, y) = (3, 4)の点
データのペアリング
2つの関連するデータを一組として扱う場合にもpair<int, int>を使用できます。例えば、人の身長と体重、商品のIDと価格などです。
std::pair<int, int> height_and_weight(170, 60); // 身長170cm、体重60kgの人
std::pair<int, int> product(12345, 2990); // IDが12345、価格が2990円の商品
グラフのエッジ表現
グラフのエッジ(辺)を表現するのにpair<int, int>を使用することもあります。firstとsecondをそれぞれエッジの始点と終点として使用します。
std::pair<int, int> edge(1, 2); // ノード1からノード2へのエッジ
これらの例から、pair<int, int>がどのように応用されるかを理解することができます。pair<int, int>はそのシンプルさと汎用性から、多くの場面で活用されています。あなた自身のコードでも、pair<int, int>を活用してみてください。