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
````