C++stlのマップ

C++ プログラミングでは、map はキーと値のペアの形式でデータを格納するために使用されるコンテナー クラス テンプレートです。その本質は、キーを通じて値を検索し、アクセスする連想コンテナーです。

マップ内のキーと値のペアは、キーに従って自動的に並べ替えられます。値はキー名に基づいて見つけることができ、すべてのキーと値のペアがサポートされています。要素を検索する場合、map は赤黒ツリー (RB ツリー) データ構造を使用して実装されているため、検索効率は非常に高くなります。

C++ でマップを使用する場合、キーと値の型を任意に指定できるヘッダー ファイル <map> を導入する必要があります。一般的なキーと値のペアのタイプには、string-int、int-double などが含まれます。

次に、map を使用して文字列と整数を格納する例を示します。

#include <iostream>
#include <map>
using namespace std;

int main() {
    map<string, int> m;
    m["apple"] = 1;
    m["orange"] = 2;
    m["banana"] = 3;

    cout << "m contains:" << endl;
    for (auto it = m.begin(); it != m.end(); it++) {
        cout << it->first << ": " << it->second << endl;
    }

    return 0;
}

このプログラムでは、マップ タイプのオブジェクト m を定義し、3 つのキーと値のペアをこのマップに挿入します。次に、このマップを反復処理して、キーと値のペアを出力します。出力結果は次のとおりです:

```
m contains:
apple: 1
Banana: 3
orange: 2
```

出力結果のキーがアルファベット順にソートされており、値がキー名 1 に対応していることがわかります。 -対一。これはマップ コンテナの特徴の 1 つです。

では、具体的にマップをどのように使用するのでしょうか?

マップを使用するときは、次の点に注意する必要があります。

1. マップ内のキーと値のペアはキーに従って自動的に並べ替えられるため、キーの種類は小なり比較演算子をサポートしている必要があります。そうでない場合は、ユーザーが指定する必要があります。並べ替えるキー タイプの比較関数 (またはファンクター)。
2. マップ内のキーは一意である必要があるため、重複したキーを保存する場合は、マルチマップ コンテナーを使用する必要があります。
3. マップ反復子は、前方および後方への移動をサポートする双方向反復子ですが、ランダム アクセスはサポートしません。
4. 添字演算子 [] を使用すると、要素の挿入、アクセス、および変更が簡単になります。要素が存在しない場合は、添字としてキーを持つ新しい要素が自動的に挿入され、値はデフォルト値に初期化されます。要素タイプ。

#include <iostream>
#include <map>
using namespace std;

int main() {
    map<string, int> m;

    // 插入元素
    m.insert(make_pair("apple", 10));
    m.insert(make_pair("orange", 20));
    m["banana"] = 30;

    // 查找元素
    if (m.find("apple") != m.end()) {
        cout << "apple: " << m["apple"] << endl;
    } else {
        cout << "apple not found" << endl;
    }

    // 遍历元素
    cout << "m contains:" << endl;
    for (auto it = m.begin(); it != m.end(); it++) {
        cout << it->first << ": " << it->second << endl;
    }

    // 修改元素
    m["apple"] = 50;

    // 删除元素
    m.erase("orange");

    return 0;
}

このプログラムでは、マップ型オブジェクト m を定義し、そこに 3 つのキーと値のペアを挿入します。次に、find 関数を使用してキーが存在するかどうかを確認したり、添え字演算子 [] を使用して値にアクセスしたりできます。次に、マップを走査し、キーと値のペアを出力します。次に、添え字演算子 [] を使用してキーに対応する値を変更できます。最後に、erase 関数を使用して、指定されたキーと値のペアを削除します。

出力結果は次のようになります。

```
リンゴ: 10
m には次のものが含まれます:
リンゴ: 10
バナナ: 30
オレンジ: 20
````
 

おすすめ

転載: blog.csdn.net/m0_74153798/article/details/131837771