C++关联容器之 multimap 关联容器

multimap关联容器用于键以及关联值(通常称为键/值对)的快速保存和存取。multiset和set中使用的许多函数,也能够用于multimap和map中。multimao和map中的元素都是键/值对而不是单个值。插入到一个multiumap或者时,使用的是一个包含键和值的pair的对象。键的顺序由比较函数对象确定。例如,在一个键类型为整数的multimap中,键能够通过比较函数对象less<int>按键的升序排序。multimap中允许重复的键,因此,多个不同的值能与同一个键相关联。这通常成为一对多关系。例如,在一个信用卡交易系统中,一个信用卡账户能有多个相关联的交易;在大学里,一个学生能修多门课程,而一个教授能教多名学生;在军队里,长官能领导多名士兵。multumap支持双向迭代器(而不是随机访问的迭代器)。下面演示关联容器multimap。为了使用multimap类,必须包含头文件<map>.

 

#include <iostream>
#include
<map>
using namespace std;
typedef multimap
<int,double,less<int> > Mmid;//define shaort name for multimap type used in this program
int main()
{
Mmid pairs;
//declare the multimap pairs

cout
<<"There are currently "<<pairs.count(15)
<<" pairs with key 15 in the multimap\n";

//insert two value_type objject in pairs
pairs.insert(Mmid::value_type(15,2.7));
pairs.insert(Mmid::value_type(
15,99.3));

cout
<<"\nAfter insert, there are "<<pairs.count(15)//看15这个键有几对值
<<" paris with key 15\n\n";

//insert five value_type objects in pairs
pairs.insert(Mmid::value_type(30,111.11));
pairs.insert(Mmid::value_type(
19,22.22));
pairs.insert(Mmid::value_type(
25,33.333));
pairs.insert(Mmid::value_type(
20,9.345));
pairs.insert(Mmid::value_type(
5,77.54));
cout
<<"Multimap paris contains :\nKey\tvalues\n";

for(Mmid::const_iterator iter=pairs.begin();iter!=pairs.end();++iter)
cout
<<iter->first<<'\t'<<iter->second<<'\n';
cout
<<endl;


return 0;
}上面用insert函数在额multimap中添加键/值对。表达式Mmid::value_type(15,2.7)创建一个pairs对象,其中first是int类型的键(15),second是double类型的值
(2.7).    Multimap被定义为mulyimap的typedef的一部分。  pairs.count(15)输出键为15的pairs对象。
最后使用名为iter的const_iterator访问multimap中每个元素中pair对象成员。注意,在输出中键是按升序排列的。

你可能感兴趣的:(C++)