zoukankan      html  css  js  c++  java
  • STL-multimap

    转自:http://www.cnblogs.com/xiaoka/archive/2011/08/09/2132342.html

    multimap提供了可以一种可以有重复键值的STL map类型。其插入方式和map相似,但是由于可以拥有重复键值所以在查找方面有些不同。

    查找

    1. 直接找到每种键值的所有元素的第一个元素的游标

    通过函数:lower_bound( const keytype& x ), upper_bound( const keytype& x ) 可以找到比指定键值x的小的键值的第一个元素和比指定键值x大的键值的第一个元素。返回值为该元素的游标。

    细节:当到达键值x已经是最大时,upper_bound返回的是这个multimap的end游标。同理,当键值x已经是最小了,lower_bound返回的是这个multimap的begin游标。

     2. 指定某个键值,进行遍历

    可以使用上面的lower_bound和upper_bound函数进行游历,也可以使用函数equal_range。其返回的是一个游标对。游标对pair::first是由函数lower_bound得到的x的前一个值,游标对pair::second的值是由函数upper_bound得到的x的后一个值。

    样例如下:

     1 multimap<int,int> a;
     2 a.insert(pair<int,int>(1,11));
     3 a.insert(pair<int,int>(1,12));
     4 a.insert(pair<int,int>(1,13));
     5 a.insert(pair<int,int>(2,21));
     6 a.insert(pair<int,int>(2,22));
     7 a.insert(pair<int,int>(3,31));
     8 a.insert(pair<int,int>(3,32));
     9 
    10 multimap<int,int>::iterator p_map;
    11 pair<multimap<int,int>::iterator, multimap<int,int>::iterator> ret;
    12 
    13 for(p_map = a.begin() ; p_map != a.end();)
    14 {
    15     cout<<p_map->first<<" =>";
    16     ret = a.equal_range(p_map->first);
    17     for(p_map = ret.first; p_map != ret.second; ++p_map)
    18         cout<<""<< (*p_map).second;
    19     cout<<endl;
    20 }

    结果:

    1 => 11 12 13
    2 => 21 22
    3 => 31 32

  • 相关阅读:
    给西安市网民的一封信
    西客集推出西安我家的功能了
    西客集又增加新功能了
    为者常成,行者常至
    kvm虚拟机磁盘&文件系统扩容流程
    Git常用命令大全
    Linux下Nexus的部署教程
    sonatype nexus简介(转)
    curl时加参数o或重定向符号>>将结果输出不到文件里怎么办?
    吞吐量(TPS)、QPS、并发数、响应时间(RT)概念
  • 原文地址:https://www.cnblogs.com/chris-cp/p/3738500.html
Copyright © 2011-2022 走看看