C++ STL multimap容器的使用

C++ STL multimap容器的使用

与set相似,multimap也是可反转的经过排序的关联容器,但是键和值的类型不同,且同一个键可能和多个值相关联。

multimap的声明使用模板参数指定键的类型和存储的值的类型。例如,下面的声明将创建一个multimap对象,其中键类型为int,而存储的值类型为string:

multimap<int,string> mmap;

第3个参数是可选参数,指出对键进行排序使用的比较函数或者对象,在默认情况下,将使用模板less<Type>,该模板将键类型作为参数,注意,老式C++可能要求显式指定。

multimap为了将信息结合,实际的键类型和值结合为一对,STL使用pair<cosnt keytype,datatype>将两个值存储到一个对象中。因此上面声明的mmap对象类型应为pair<const int,string>。

使用insert成员函数进行信息插入:


    multimap<int, string> mmap;
    typedef pair<int, string> Pair;
    mmap.insert(Pair(123, "测试"));

成员函数equal_range(),用键作为参数,返回两个迭代器,其表示区间与键参数匹配,为了返回两个值,该方法将他们封装到一个pair中,该pair的两个模板参数都是迭代器,

下面将打印123键的值
    multimap<int, string> mmap;
    typedef pair<int, string> Pair;
    mmap.insert(Pair(123, "测试"));
    mmap.insert(Pair(123, "测试2"));
    auto ra = mmap.equal_range(123);
    for (auto it = ra.first; it != ra.second; it++)
    {
        cout << (*it).second << endl;
    }

上面使用了自动类型判断,其ra的类型应该为  pair<multimap<int, string>::iterator, multimap<int, string>::iterator>

 

count()成员函数的接受参数为键,其返回具有该键的元素数目

例如:


    multimap<int, string> mmap;
    typedef pair<int, string> Pair;
    mmap.insert(Pair(123, "测试"));
    mmap.insert(Pair(123, "测试2"));
    cout << mmap.count(123);

将返回2。

还要成员函数lower_bound()和upper_boune(),其将键作为参数,且工作原理和处理set相同,详见另一篇文章:https://blog.csdn.net/qq_38421512/article/details/100833407

一般情况下,可以使用自动类型和typedef来简化代码,便于维护。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值