C++ では、ベクターは動的にサイズを変更できる多用途のコンテナーであり、要素の効率的な操作を可能にします。ペアは 2 つの異種オブジェクトを保持できる単純なコンテナであり、関連データを関連付けて管理するための便利な手段を提供します。これらのペアがベクトル内で編成されると、開発者は、キーと値のペア、または 2 つの異なる要素のその他の組み合わせの動的なコレクションを作成できるようになります。
このデータ構造は、キーと値のペアを扱う場合やエンティティ間の関係を表す場合など、要素をペアとして保存する必要があるシナリオで特に役立ちます。この記事では、ペアの C++ ベクトルの概念を検討し、その実際のアプリケーションを説明するためにさまざまな例を検討します。
例 1: 基本的な使用法: ペアのベクトルの反復処理
生徒の名前と対応する年齢を表すペアのベクトルを作成する基本的な例を考えてみましょう。ペアのベクトルの反復は、通常のベクトルの反復と似ています。イテレータまたは範囲ベースの「for」ループを使用して、ベクトル内の各ペアを取得できます。
この例では、意味のあるコンテキストで「ペアのベクトル」の構文を示します。
#include
#include <ベクター>
#include <ユーティリティ>
整数メイン ( ) {
std::vector < std::ペア < std::string、int >> 学生データ;
StudentData.push_back ( std::make_pair ( 'アダム' 、 二十 ) ) ;
StudentData.push_back ( std::make_pair ( '請求書' 、 22 ) ) ;
StudentData.push_back ( std::make_pair ( 「チャーリー」 、 21 ) ) ;
std::cout << 「生徒データ: \n 」 ;
のために ( 定数自動 & 学生 : 学生データ ) {
std::cout << '名前: ' << 学生ファースト << '、 年: ' << 学生.2番目 << std::endl;
}
戻る 0 ;
}
この C++ コード スニペットでは、まず 3 つの重要なヘッダー ファイルを含めます。入出力操作用の「
次に、main() 関数内で、「std::vector」コンテナを使用して「studentData」という名前のベクトルを宣言します。このベクトルは、生徒の名前 (「std::string」として表される) と年齢 (「int」整数) をカプセル化したペアを格納するように設計されています。次に、「studentData」ベクトルに 3 つのペアを設定します。 「push_back」関数を使用すると、ベクトルの末尾にペアが追加され、そのサイズが動的に調整されます。次に、ループが「studentData」を反復処理し、各生徒の名前と年齢を抽出して出力します。出力には「Student Data:」が表示され、構造化された表現が強調されます。生徒の名前と年齢が別々に印刷され、保存されたデータが明確に表示されます。
例 2: ペアのベクトルのソート
ペアのベクトルの並べ替えは、特にキーと値の関連付けを扱う場合に一般的な操作です。この目的には、「
#include <ベクター>
#include <アルゴリズム>
整数メイン ( ) {
std::vector < std::ペア < std::string、int >> 情報;
info.push_back ( std::make_pair ( 「ピーター」 、 15 ) ) ;
info.push_back ( std::make_pair ( 'ドラ' 、 29 ) ) ;
info.push_back ( std::make_pair ( 「ハンナ」 、 二十 ) ) ;
std::cout << 「元の情報: \n 」 ;
のために ( 定数自動 & エントリ : 情報 ) {
std::cout << '名前: ' << エントリ.最初 << '、 年: ' << エントリ.秒 << std::endl;
}
std::ソート ( 情報の開始 ( ) 、情報終了 ( ) ) ;
std::cout << 」 \n 分類された情報: \n 」 ;
のために ( 定数自動 & エントリ : 情報 ) {
std::cout << '年: ' << エントリ.秒 << '、 名前: ' << エントリ.最初 << std::endl;
}
戻る 0 ;
}
この C++ コード例では、ペアのベクトルを操作して、個人、特に名前と年齢に関連するデータを保存および操作します。 main() 関数内で「ペアの情報」という名前のベクトルを初期化します。次に、効率的なペアの作成のために「push_back」関数と「std::make_pair」を利用して、それぞれに個別の人物の名前と年齢を含む 3 つのペアをこのベクトルに入力します。
「オリジナル情報」をコンソールに出力します。これには、「情報」ベクトルを反復処理し、各ペアのコンポーネントを出力することが含まれます。次に、「std::sort」アルゴリズムを利用して、各ペアの最初の要素 (この場合は名前) を比較するペアのデフォルトの比較演算子に基づいて「info」ベクトルを並べ替えます。ソート操作に続いて、ソートされた情報を出力することによって、変更された「情報」ベクトルを再度繰り返します。今回の出力では、年齢優先の順序が強調され、並べ替えプロセスの結果が示されています。
例 3: 異なるタイプのベクトルの結合
2 つのベクトルからの情報を結合しなければならない状況が発生する場合があります。ペアのベクトルは、2 つのベクトルの要素間の関連性を維持するのに役立ちます。
#include#include <ベクター>
整数メイン ( ) {
std::vector < std::文字列 > 都市 = { 'ニューヨーク' 、 'パリ' 、 '東京' } ;
std::vector < 整数 > 人口 = { 8175133 、 2140526 、 37435191 } ;
std::vector < std::ペア < std::string、int >> 都市人口ペア;
のために ( サイズ_t i = 0 ;私 < 標準::分 ( 都市のサイズ ( ) 、人口.サイズ ( ) ) ; ++i ) {
cityPopulationPairs.push_back ( { 都市 [ 私 】 、人口 [ 私 】 } ) ;
}
std::cout << 「都市と人口のペア:」 << std::endl;
のために ( 定数自動 & ペア: cityPopulationPairs ) {
std::cout << '市: ' << ペア.ファースト << '、 人口: ' << ペア.秒 << std::endl;
}
戻る 0 ;
}
コードの「main」関数では、都市名を格納する「cities」と、対応する人口値を格納する「populations」の 2 つのベクトルが宣言されています。
3 番目のベクトル「cityPopulationPairs」は、都市とそれぞれの人口のペアを格納するために定義されています。各ペアは「std::pair
情報を結合した後、別の「for」ループを使用して、「cityPopulationPairs」に保存されているペアを反復処理します。結合されたデータは、「std::cout」を使用して標準出力に表示され、各都市とそれに対応する人口を明確に表します。
例 4: 最大値と最小値を求める
データセット内の最小値と最大値を特定することは、アルゴリズム操作および統計操作における一般的な要件です。ペアのベクトルを使用して、シーケンス内の最大値と最小値の両方を追跡できます。
#include#include <ベクター>
#include <アルゴリズム>
整数メイン ( ) {
std::vector < 整数 > 数字 = { 5 、 12 、 18 、 3 、 7 、 4 、 33 } ;
std::vector < std::ペア < あなた、あなた >> minMaxPairs;
std::ソート ( 数字の始まり ( ) 、数値.終了 ( ) ) ;
minMaxPairs.push_back ( { 数字.フロント ( ) 、数値.戻る ( ) } ) ;
std::cout << 「最小値と最大値のペア:」 << std::endl;
のために ( 定数自動 & ペア: minMaxPairs ) {
std::cout << 「ミン:」 << ペア.ファースト << 「、マックス:」 << ペア.秒 << std::endl;
}
戻る 0 ;
}
提供されている C++ コードは、整数のベクトル内の最小値と最大値を見つけて、これらの値をペアのベクトルに格納するプロセスを示しています。 「numbers」という名前のベクトルが最初に宣言され、整数のセットで初期化されます。データセット内の最小値と最大値を効率的に識別するために、プログラムはアルゴリズム ライブラリの「std::sort」関数を利用します。
この関数は、要素を昇順に配置し、データセット内の最小値と最大値の両方を識別するプロセスを簡素化することを目的としています。並べ替え操作は、numbers.begin() とnumbers.end() を範囲パラメータとして使用して、「numbers」ベクトルに適用されます。ソートステップに続いて、プログラムはペアのベクトル「minMaxPairs」を作成し、計算された最小値と最大値を保存します。次に、「push_back」関数を使用して、ソートされた数値ベクトルの最初 (最小) 要素と最後の (最大) 要素を含む 1 つのペアを追加します。最後に、プログラムは「minMaxPairs」ベクトルを反復処理し、最小値と最大値を表示することで結果を出力します。
結論
結論として、ペアの C++ ベクトルは強力で柔軟なデータ構造として現れ、プログラミング タスクに汎用性の層を追加します。その構文と実際のアプリケーションの詳細な調査を通じて、このコンテナーがキーと値の関連付けを整理し、さまざまなベクトルからの情報を結合し、最小値と最大値を追跡するのにどのように役立つかを確認しました。