Multimap的基本操作类成员函数
begin()返回指向第一个元素的迭代器
clear()删除所有元素
count()返回一个元素出现的次数
empty()如果multimap为空则返回真
end()返回一个指向multimap末尾的迭代器
equal_range()返回指向元素的key为指定值的迭代器对
erase()删除元素
find()查找元素
get_allocator()返回multimap的配置器
insert()插入元素
key_comp()返回比较key的函数
lower_bound()返回键值>=给定元素的第一个位置
max_size()返回可以容纳的最大元素个数
rbegin()返回一个指向mulitmap尾部的逆向迭代器
rend()返回一个指向multimap头部的逆向迭代器
size()返回multimap中元素的个数
swap()交换两个multimaps
upper_bound()返回键值>给定元素的第一个位置
value_comp()返回比较元素value的函数
//multimap允许重复的键值插入容器
// **********************************************************
// * pair只包含一对数值:pair<int,char> *
// * map是一个集合类型,永远保持排好序的, *
// pair * map每一个成员就是一个pair,例如:map<int,char> *
// * map的insert()可以把一个pair对象作为map的参数,例如map<p> *
// ***********************************************************
#include<map>
#include<iostream>
using namespace std;
int main( void )
{
//获取相同key的值
multimap< int , int > a;
a.insert(pair< int , int >(1,11));
a.insert(pair< int , int >(1,12));
a.insert(pair< int , int >(1,13));
a.insert(pair< int , int >(2,21));
a.insert(pair< int , int >(2,22));
a.insert(pair< int , int >(3,31));
a.insert(pair< int , int >(3,32));
multimap< int , int >::iterator p_map;
pair<multimap< int , int >::iterator, multimap< int , int >::iterator> ret;
for (p_map = a.begin() ; p_map != a.end();)
{
cout<<p_map->first<< " =>" ;
ret = a.equal_range(p_map->first);
for (p_map = ret.first; p_map != ret.second; ++p_map)
cout<< " " << (*p_map).second;
cout<<endl;
}
multimap< int , char *> m;
//multimap的插入只能用insert()不能用数组
m.insert(pair< int , char *>(1, "apple" ));
m.insert(pair< int , char *>(1, "pear" )); //apple和pear的价钱完全有可能是一样的
m.insert(pair< int , char *>(2, "banana" ));
//multimap的遍历只能用迭代器方式不能用数组
cout<< "***************************************" <<endl;
multimap< int , char *>::iterator i,iend;
iend=m.end();
for (i=m.begin();i!=iend;i++)
{
cout<<(*i).second<< "的价钱是" <<(*i).first<< "元/斤 ";
}
cout<<endl;
//元素的反相遍历
multimap< int , char *>::reverse_iterator j,jend;
jend=m.rend();
for (j=m.rbegin();j!=jend;j++)
{
cout<<(*j).second<< "的价钱是" <<(*j).first<< "元/斤 ";
}
cout<<endl;
multimap< int , char *>::iterator beg = m.lower_bound(1);
multimap< int , char *>::iterator end = m.upper_bound(1);
cout<<"价格为1的水果有:"<<endl;
while(beg != end)
{
//int Nstr = beg->second;
cout<<(*beg).second<<endl;
++beg;
}
//元素的搜索find()
cout<<"价格为1的水果有find():"<<endl;
multimap< int , char *>::iterator s;
s=m.find(1); //find()只要找到一个就行了,然后立即返回。
cout<<(*s).second<< " "<<(*s).first<<endl;
cout<< "键值等于1的元素个数是:" <<m.count(1)<<endl;
//删除 erase(),clear()
cout<<"删除价格为1的水果后:"<<endl;
m.erase(1);
for (i=m.begin();i!=iend;i++)
{
cout<<(*i).second<< "的价钱是"<<(*i).first<< "元/斤 " ;
}
return 0;
}
Output:
1 => 11 12 13
2 => 21 22
3 => 31 32
***************************************
apple的价钱是1元/斤 pear的价钱是1元/斤 banana的价钱是2元/斤
banana的价钱是2元/斤 pear的价钱是1元/斤 apple的价钱是1元/斤
价格为1的水果有:
apple
pear
价格为1的水果有find():
apple 1
键值等于1的元素个数是:2
删除价格为1的水果后:
banana的价钱是2元/斤