zoukankan      html  css  js  c++  java
  • C++ multimap查找相同键的键值对方法

    1、使用find和count:
         count(k) 求出键k的出现次数
      find(k)  返回第一个拥有键k的实例
    multimap<int, int>::size_type  cnt = testMap.count(searchItem);
    multimap<int, int>::iterator  iter = testMap.find(searchItem);
    for(;cnt > 0; cnt--, iter++)
    {
          cout<<iter->first<<" "<<iter->second<<endl;
    }
    2、使用lower_bound与upper_bound:
            lower_bound(k)返回迭代器指向不小于K的第一个元素
            upper_bound(k)返回迭代器指向 大于k的第一个元素
    multimap<int, int>::iterator iterBeg = testMap.lower_bound(searchItem);
    multimap<int, int>::iterator iterEnd = testMap.upper_bound(searchItem);
    for(;iterBeg != iterEnd;iterBeg++)
    {
         cout<<iterBeg->first<<"->"<<iterBeg->second<<endl;    
    }
    3、使用equal_range:
          equal_range(k):函数的返回值是一个pair,分别存放相同键k的迭代器区间。
    auto ret = testMap.equal_range(searchItem);
    auto it = ret.first;
    while(it!=ret.second)
    {
         cout<<it->first<<"->"<<it->second<<endl;
         ++it;
    }

    4、程序测试:

    #include <iostream>
    #include <map>
    #include <vector>
    #include <algorithm>
    using namespace std;
    
    int main()
    {
        multimap<int, int> testMap;
        testMap.insert(make_pair(5,1));
        testMap.insert(make_pair(5,2));
        testMap.insert(make_pair(5,3));
        testMap.insert(make_pair(5,4));
        int searchItem = 5;
        
        /*第一种方法*/
        multimap<int, int>::size_type  cnt = testMap.count(searchItem);
        multimap<int, int>::iterator  iter = testMap.find(searchItem);
        for(;cnt > 0; cnt--, iter++)
        {
              cout<<iter->first<<"->"<<iter->second<<endl;
        }
        cout<<endl;
        
        /*第二种方法*/
        multimap<int, int>::iterator iterBeg = testMap.lower_bound(searchItem);
        multimap<int, int>::iterator iterEnd = testMap.upper_bound(searchItem);
        for(;iterBeg != iterEnd;iterBeg++)
        {
            cout<<iterBeg->first<<"->"<<iterBeg->second<<endl;    
        }
        cout<<endl;
        
        /*第三种方法*/
        auto ret = testMap.equal_range(searchItem);
        auto it = ret.first;
        while(it!=ret.second)
        {
            cout<<it->first<<"->"<<it->second<<endl;
             ++it;
        }
        return 0;
    }
    

      

  • 相关阅读:
    win7通过配置怎么样ODBC数据源
    apache2.2 虚拟主机配置
    Matlab曲面拟合和插值
    查询记录rs.previous()使用
    阅读《平庸的世界》后感觉 (两)
    苹果公司的新的编程语言 Swift 高级语言()两--基本数据类型
    UVA 12075
    [LeetCode] Search a 2D Matrix [25]
    js 数组,字符串,JSON,bind, Name
    linux系统下怎么安装.deb文件?
  • 原文地址:https://www.cnblogs.com/ladawn/p/8203789.html
Copyright © 2011-2022 走看看