マップの概要/マルチマップ
マップは、標準の連想コンテナです。マップに格納される要素は、(キー、値)キーと値のペアと呼ばれるキーと値のペアのシーケンスです。キーに基づいてデータをすばやく取得する機能を提供します。(これは、宅配便番号を保持し、宅配便を受け取るようなものです)
例:
#include <iostream>
#include <functional>
#include <algorithm>
#include <map>
#include <string>
using namespace std;
int main()
{
map<int, string> mapStu;
mapStu.insert(pair<int, string>(1, "张三"));
mapStu.insert(pair<int, string>(2, "李四"));
mapStu.insert(pair<int, string>(3, "王五"));
mapStu[4] = "赵六";
for(map<int, string>::iterator it = mapStu.begin(); it != mapStu.end(); it++)
{
cout<<"key: "<<(*it).first<<" value: "<<(*it).second<<endl;
}
system("pause");
return 0;
}
動作環境:vc ++ 2010学習バージョン
動作結果:
1)マップのキー値は一意です。コレクション内の要素は特定の順序で配置されます。要素挿入処理は、ソートルールに従って挿入されるため、挿入位置の指定はできません。
2)マップの最下層の特定の実装は、赤黒木バリアントを使用したバランスのとれた二分木のデータ構造です。挿入操作、削除操作、および取得操作は、ベクターよりもはるかに高速です。
3)マップはキーに対応する値に直接アクセスでき、マップ[キー] =値などの[]演算子をサポートします。
マルチマップとマップの違い:
マップは一意のキー値をサポートし、各キーは1回だけ出現でき、マルチマップ内の同じキーは複数回出現できます。マルチマップは[]演算子をサポートしていません。
例:
#include <iostream>
#include <functional>
#include <algorithm>
#include <map>
#include <string>
using namespace std;
int main()
{
multimap<int, string> mapStu;
mapStu.insert(pair<int, string>(1, "张三"));
mapStu.insert(pair<int, string>(2, "李四"));
mapStu.insert(pair<int, string>(3, "王五"));
//multimap 不支持[]操作, map支持
//mapStu[4] = "赵六";
//multimap 支持相同的key 插入
mapStu.insert(pair<int, string>(3, "小王五"));
for(multimap<int, string>::iterator it = mapStu.begin(); it != mapStu.end(); it++)
{
cout<<"key: "<<(*it).first<<" value: "<<(*it).second<<endl;
}
system("pause");
return 0;
}
動作環境:vc ++ 2010学習バージョン
動作結果: