13.3.4 multimap容器
multimap与map的关系,类似于multiset与set的关系,使用multimap同样需要包含头文件<map>,multimap的创建方式与map相同,有3种方式。multimap与map不同之处在于其允许出现相同的元素,代码13.10和代码13.9几乎一样,不同的是将map换成了multimap,以帮助读者理解两者的区别。
代码13.10 multimap容器对象的创建和元素访问CreateAndMultimap
<————————————文件名:example1310.cpp——————————————-> 01 #include<iostream> 02 #include<map>//使用multimap容器要包含的头文件 03 #include<string>//使用string类要包含的头文件 04 using namespace std; 05 int main() 06 { 07 //创建part<int,string>型数组 08 pair<int,string>sz[4]={pair<int,string>(9,"Asia"),pair<int,string>(4,"Africa"), 09 pair<int,string>(1,"Euro"),pair<int,string>(4,"America")}; 10 multimap<int,string>obM(sz,sz+4);//用迭代器区间构造obM 11 cout<<obM. size()<<endl;//输出obM中的元素个数 12 multimap<int,string>:iterator it=obM. begin();//创建multimap<int,string>模板类的 13 //迭代器,指向obM的头部 14 while(it!=obM. end())//按顺序逐个输出obM中的元素 15 { 16 cout<<(it). first<<":"<<(it).second<<endl; 17 it++; 18 } 19 return 0; 20 }
输出结果如下所示。
4 1:Euro 4:Africa 4:America 9:Asia.
【代码解析】输出结果体现了multimap的特点,即允许特定的关键字多次出现,也就是说允许发生一个关键字对应多个值的情况,代码第10行的multimap容器对象在创建时同样会对其中的元素进行排序处理。