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>
を活用してみてください。