##map
map是c++标准模板库stl的一个关联容器,提供一对一的映射关系
“第一个一”称为关键字(key),别名是first,每个关键字只能在map中出现一次
“第二个一”称为关键字的值(value),别名是second
例如·:建立一个朋友数据库表,保存多个“姓名-电话号码”的对应关系,并保存在某种数据结构中
定义一个map对象
map<string,string>friends;
把朋友以及对应的电话号码保存在friends中:
friends.insert(“Alice”,“12456777”);
friends.insert(“Bob”,“10086”);
friends.insert(“Tom”,13456789");
要查询朋友的号码,通过
cout<<“jack的电话号码是:”<<friends.find(“Jack”);
例:给出一段英文
asafgggghhjkn
统计其中的每个字母出现的次数
定义map<char,int>cnt;//把各字母的出现的次数保存在cnt中
cnt.insert(‘a’,1);
cnt.insert(‘s’,1);
cnt[‘a’]++;
cnt[‘f’]++;//取代insert动作
map以模板(泛型)的方式出现,可以存储任意类型的数据,包括使用者自定义的数据类型
如:
map<int,int>mp;//整型到整型
map<int,string>m2;//整型到字符串型
map<string,stirng>m3;//字符串型到字符串型
map<preson,int>m6;//创建一个key为person型、value为int类型的map对象
在map内部所有的数据都是有序的
map由一颗红黑树实现,这颗树具有对数据自动排序的功能
###插入元素
map<int,string>student;
方式一:用insert函数插入pair
student.insert(pair<int,string>(0,"Zhangsan"));//pair函数构造一个对象,对象由一个整型和一个字符串型组成
方式二:直接赋值
student[10]="lisi";
###查找元素
find()返回一个迭代器,指向查找的元素,找不到,则返回map::end()位置(NULL)
iter=student.find(123);//查找123关键字对应的值
if(iter!=student.end())//判断迭代器是否指向end位置
{
cout<<"found,the value is"<<iter->second;
}
else
cout<<"not found"<<endl;
引用方法:
map<int,int>mpl;
int sum=100;
mpl[10]=3;//插入元素
sum+=mpl[10];//mpl中存在关键字10,它的对应值是3,所以sum累加后变为103