map的用法实例(map和multimap)

来源:互联网 发布:linux入门视频 编辑:程序博客网 时间:2024/06/09 22:11

map内部元素的组织方式是平衡二叉树--基于红黑树的变形

map<k,t> s;包含两个参数;键k与对象t

这里只介绍了常用的map与multimap,包括他们的实例操作和一些基本操作函数。

#include<iostream>#include<string>#include<cstring>#include<algorithm>#include<map>using namespace std;int main(){cout<<"map"<<endl;map<string ,int> s;//Map中的元素是自动按第一个参数升序排序,所以不能对map用sort函数 map<string,int>::iterator t;//迭代器,在map的操作中不可或缺。 s["first"]=1;//最简单的插入方式。s.insert(pair<string,int>("third",3));//insert插入方式 s.insert(make_pair("second",2));//make_pair插入 ***** t=s.find("first");//查找。 如果没找到就返回指向map尾部的迭代器(即s.end())。 if(t!=s.end()) cout<<"it's existence "<<endl;cout<<t->second<<endl;//输出方式  second表示第二个参数。 同样可以用t->输出第一个参数。 s.erase(t);//删除方式,用迭代器。因为元素自动排序,不知道位置,只有经过迭代器确定后才能找到位置。for(t=s.begin() ;t!=s.end() ;t++) cout<<t->second<<"  ";//遍历输出。 cout<<endl<<"next is multimap "<<endl;multimap<string,string> tel;//允许使用重复的键 tel.insert(make_pair("sunshine","15518781703")); //插入方式,map中最简单的不再适用。 tel.insert(make_pair("sunshine","15518631156")); tel.insert(make_pair("he","12345678901")); multimap<string,string>::iterator k;k=tel.find("sunshine");//返回指向第一个与键 sunshine 匹配的迭代指针cout<<"the first tel is "<<k->second<<endl;//输出 cout<<"the sum of sunshine's tel is "<<tel.count("sunshine")<<endl;//统计某一类键的个数。cout<<"遍历"<<endl; for(k=tel.begin() ;k!=tel.end() ;k++) cout<<k->second<<"  "; }//map的基本操作函数://C++Maps 是一种关联式容器,包含“关键字/值”对//begin() 返回指向map头部的迭代器//clear() 删除所有元素//count() 返回指定元素出现的次数//empty() 如果map为空则返回true//end() 返回指向map末尾的迭代器//equal_range() 返回特殊条目的迭代器对//erase() 删除一个元素//find() 查找一个元素//get_allocator() 返回map的配置器//insert() 插入元素//key_comp() 返回比较元素key的函数//lower_bound() 返回键值>=给定元素的第一个位置//max_size() 返回可以容纳的最大元素个数//rbegin() 返回一个指向map尾部的逆向迭代器//rend() 返回一个指向map头部的逆向迭代器//size() 返回map中元素的个数//swap() 交换两个map//upper_bound() 返回键值>给定元素的第一个位置//value_comp() 返回比较元素value的函数