C++ STL-容器-mutimap-GCC 4.9(C++11)编译通过

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元/斤
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值