概述
map映照容器是一种实现了平衡二叉树的数据结构,Map中每个元素都是一个键值对<key,value>,且key值是不能重复的,即每个元素的key值都是唯一的。Map容器可以按key检索
map容器的定义:
map<类型1,类型2>对象名;如:map<string,float> m;其中,类型1是key的类型,类型2是value的类型。
map<int,vector<int> >m;
查找:
map内的元素能以数组的方式进行访问
例子:
#include<iostream>
#include<map>
using namespace std;
int main(){
map<int,string>a;
a[2]="dwd";
a[5]="dff";
a[6]="asf";
a[8]="21";
a[10]="345";
a.erase(2);
for(int i=1;i<=a.size();i++)
cout<<a[i]<<endl;
cout<<a.find(5)->first<<a.find(5)->second;
return 0;
}
二分查找:
.lower_bound(x); 返回第一个大于等于x的数的地址(迭代器) 可用.first和.second访问其key值和value值
.upper_bound(x); 返回第一个大于x的数的地址(迭代器)
如果所有元素都小于x,则返回最后一个下标+1的位置
遍历:
#include <iostream>
#include <map>
using namespace std;
int main() {
map<int, int> _map;
_map[0] = 1;
_map[1] = 2;
_map[10] = 10;
map<int, int>::iterator iter;
iter = _map.begin();
while(iter != _map.end()) {
cout << iter->first << " : " << iter->second << endl;
iter++;
}
// 也可以使用for循环遍历
/*
for(iter = _map.begin(); iter != _map.end(); iter++) {
cout << iter->first << " : " << iter->second << endl;
}
*/
return 0;
}