HOWTO · C++

C++ の連想配列

この記事では、C++ プログラミング言語の連想配列について理解します。

このページの内容

この記事では、連想配列とその C++ プログラミング言語での実装について理解します。

C++ における配列の概要

配列は、同じ名前で保存された一連の変数を含むオブジェクトのコレクションです。 すべてのアイテムは同じデータ型です。 タイプは、リスト、整数、または文字列にすることができます。

数値などの配列変数を定義し、各変数を個別に定義する代わりに、インデックス numbers[0]、numbers[1]、および numbers[99] までを使用して、個々の変数を表します。 number0、number1、...、number99 など。 インデックスを使用して、配列の要素の特定の 1つに到達することができます。

インデックス付き配列と連想配列の 2つの配列タイプがあります。 インデックス付き配列と連想配列の両方に、一度しか使用できない独自のキーがあります。

数値キーを持つ配列は、インデックス付き配列と呼ばれます。 最も基本的な形式では、各配列キーが独自の値に接続された配列の形式をとります。

C++ の連想配列

このセクションでは、C++ の連想配列に集中します。

連想配列と呼ばれるユニークな種類の配列は、インデックスの値が任意のデータ型である可能性がある配列です。 インデックスは、整数、文字、浮動小数点値、文字列などのいずれかです。

ただし、配列に含まれるデータ項目にアクセスするには、インデックス値が完全に一意である必要があります。 連想配列のインデックスに付けられた名前はキーと呼ばれ、特定の場所に格納されているデータは値と呼ばれます。

その結果、連想配列をキーと値のペアとして概念化できます。 したがって、連想配列のコンポーネントは、キーと値で構成されるペアです。

C++ での連想配列の実装

プログラミング言語 C++ では、連想配列はマップと呼ばれることもあります。 解析された値に対してキーを返すように C++ でマップを作成する方法を示す例を見てみましょう。

まず、アプリケーションが map やその他のメソッドを使用できるように、ライブラリをインポートする必要があります。

#include <iostream>
#include <map>

プログラムの main() メソッド内で、キーとして文字列型、値として型 float を持つマップ cgpa を作成します。 適切なスペースにいくつかの文字列値と浮動小数点値をマップに入力します。

map<string, float> cgpa{{"Nabeel", 3.3},
                        {"Daniyal", 3.7},
                        {"Saad", 3.4},
                        {"Hamza", 3.1},
                        {"Zeeshan", 3.9}};

マップの反復子を作成します。

map<string, float>::iterator i;

マップに含まれるすべての値をリストするメッセージを表示します。 マップ全体を最初から最後まで反復しながら、すべての値を表示する for ループを作成します。

cout << "The CGPA of all the students is as follows:" << endl;
for (i = cgpa.begin(); i != cgpa.end(); i++) {
  cout << i->first << " - " << i->second << endl;
}

それでは、キーに基づいてマップからいくつかの値を取得しましょう。

cout << "\nThe CGPA of Hamza is: " << cgpa["Hamza"] << endl;
cout << "\nThe CGPA of the Delft Stack writer Saad is: " << cgpa["Saad"]
     << endl;

完全なソース コード:

#include <iostream>
#include <map>

using namespace std;

int main() {
  map<string, float> cgpa{{"Nabeel", 3.3},
                          {"Daniyal", 3.7},
                          {"Saad", 3.4},
                          {"Hamza", 3.1},
                          {"Zeeshan", 3.9}};

  map<string, float>::iterator i;

  cout << "The CGPA of all the students is as follows:" << endl;
  for (i = cgpa.begin(); i != cgpa.end(); i++) {
    cout << i->first << " - " << i->second << endl;
  }

  cout << "\nThe CGPA of Hamza is: " << cgpa["Hamza"] << endl;
  cout << "\nThe CGPA of the Delft Stack writer Saad is: " << cgpa["Saad"]
       << endl;
}

出力:

The CGPA of all the students is as follows:
Daniyal - 3.7
Hamza - 3.1
Nabeel - 3.3
Saad - 3.4
Zeeshan - 3.9

The CGPA of Hamza is: 3.1

The CGPA of the Delft Stack writer Saad is: 3.4