はじめに
この実験では、C++ プログラミング言語を使って、ペア テンプレート用のカスタム ソート メソッドを作成し、ベクトルを使ってそれを実装する方法を学びます。この実験では、C++ プログラミングの基本とペア テンプレートの概念に関する事前知識があることを前提としています。これらのトピックに初めて触れる場合は、進む前に対応するチュートリアルを読むことをお勧めします。
この実験では、C++ プログラミング言語を使って、ペア テンプレート用のカスタム ソート メソッドを作成し、ベクトルを使ってそれを実装する方法を学びます。この実験では、C++ プログラミングの基本とペア テンプレートの概念に関する事前知識があることを前提としています。これらのトピックに初めて触れる場合は、進む前に対応するチュートリアルを読むことをお勧めします。
まず、ペアの空のベクトルを宣言し、それにいくつかの要素を入れます。
このステップでは、空のベクトルを作成します。
#include <iostream>
#include <bits/stdc++.h>
using namespace std;
int main() {
vector<pair<int, int>> v;
return 0;
}
このコード ブロックでは、必要なヘッダー ファイルを含め、ペアの空のベクトルを宣言しています。
空のベクトルを作成した後、それに要素を追加できます。ベクトル クラスの push_back
メソッドを使って要素を追加します。この場合、整数のペアをベクトルに追加しています。
int main() {
vector<pair<int, int>> v;
v.push_back(make_pair(1, 5));
v.push_back(make_pair(1, 3));
v.push_back(make_pair(2, 6));
v.push_back(make_pair(2, 4));
v.push_back(make_pair(5, 24));
return 0;
}
このコード ブロックでは、ベクトル v に 5 つのペアを追加しています。
カスタム ソート メソッドを作成するには、まず比較関数を定義する必要があります。比較関数は 2 つのペアを比較し、最初のペアが 2 番目のペアより小さいかどうかを示すブール値を返します。この場合、各ペアの最初の要素を比較し、それらが等しい場合は、ペアの 2 番目の要素を比較します。
bool cmp(pair<int, int> x, pair<int, int> y)
{
if (x.first!= y.first)
return x.first < y.first;
else
return x.second < y.second;
}
このコード ブロックでは、2 つの整数のペアを引数として取り、指定された条件に基づいてブール値を返す比較関数を作成しました。関数はまず各ペアの最初の要素を比較します。それらが等しくない場合、関数は比較の結果を返します。それらが等しい場合、関数はペアの 2 番目の要素を比較し、比較の結果を返します。
このステップでは、前のステップで作成したカスタム ソート メソッドに基づいて、ベクトル内の要素をソートします。ベクトルをソートするには、STL の sort
メソッドにベクトルを引数として渡し、カスタム ソート メソッドを 3 番目の引数として渡す必要があります。
int main() {
vector<pair<int, int>> v;
v.push_back(make_pair(1, 5));
v.push_back(make_pair(1, 3));
v.push_back(make_pair(2, 6));
v.push_back(make_pair(2, 4));
v.push_back(make_pair(5, 24));
sort(v.begin(), v.end(), cmp);
return 0;
}
このコード ブロックでは、STL の sort
メソッドを使ってベクトル v
をソートしました。カスタム ソート メソッド cmp
を 3 番目のパラメータとして渡しました。
このステップでは、ソート済みのベクトル要素を表示します。for ループを使ってベクトルを反復処理し、各ペアの最初と 2 番目の要素を表示します。
int main() {
// 前のコード
for (auto p : v)
{
cout << p.first << " " << p.second << endl;
}
return 0;
}
この最後のコード ブロックでは、for-each ループを使ってベクトル内のペアにアクセスし、コンソールに表示しました。では、コードを実行して結果を見てみましょう。
コードを実行するには、次のコマンドを使ってコンパイルする必要があります。
g++ ~/project/main.cpp -o main &&./main
コードを実行した後、ソート済みのペアが昇順に表示されます。
#include <iostream>
#include <bits/stdc++.h>
using namespace std;
bool cmp(pair<int, int> x, pair<int, int> y)
{
if (x.first!= y.first)
return x.first < y.first;
else
return x.second < y.second;
}
int main() {
vector<pair<int, int>> v;
v.push_back(make_pair(1, 5));
v.push_back(make_pair(1, 3));
v.push_back(make_pair(2, 6));
v.push_back(make_pair(2, 4));
v.push_back(make_pair(5, 24));
sort(v.begin(), v.end(), cmp);
for (auto p : v)
{
cout << p.first << " " << p.second << endl;
}
return 0;
}
この実験では、C++ でペア テンプレート用のカスタム ソート メソッドを作成し、ベクトルを使って実装する方法を学びました。空のベクトルを作成し、そこに要素を追加し、比較関数を作成し、sort
関数を使ってカスタム ソート メソッドを使ってベクトル内の要素をソートし、ソート済みのベクトルを表示しました。カスタム ソート メソッドは、コードで定義する特定の要件または条件に基づいて、ベクトル内のペアをソートするために使用できます。