當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


C++ unordered_map equal_range用法及代碼示例


unordered_map::equal_range() 是 C++ STL 中的內置函數,用於返回範圍的邊界,該範圍包括容器中鍵比較等於 k 的所有元素。 unordered_map容器是鍵唯一的容器,範圍最多包含一個元素。該範圍由兩個迭代器定義,

  • 第一個指向範圍的第一個元素。
  • 第二個指向範圍的最後一個元素。

參數:該函數接受單個參數key用於保存要比較的值。

返回值:它返回一個對,其中包含一對定義所需範圍的迭代器。其中其成員是pair::first 和pair::second。第一個是範圍下限的迭代器,第二個是範圍上限的迭代器。範圍中的元素是這兩個迭代器之間的元素,包括第一對,但不包括第二對。

以下示例程序旨在說明 C++ STL 中的 unordered_map::equal_range() 函數:

示例 1:


// C++ program to implement  
// unordered_map::equal_range() function 
#include <iostream> 
#include <unordered_map> 
using namespace std; 
  
// main program 
int main() 
{ 
    unordered_map <int, int> map = { { 1, 3 },  
                                     { 1, 2 },  
                                     { 3, 1 },  
                                     { 2, 3 } }; 
    for (int j = 1; j <= 3; j++) { 
        auto range = map.equal_range(j); 
          
        //'auto' is a keyword 
        for (auto i = range.first; i != range.second; i++) { 
              
            // iterates first to last 
            cout << "first : " << i->first; 
            cout << "\nsecond : " << i->second << endl 
                << endl; 
        } 
    } 
} 
輸出:
first : 1
second : 3

first : 2
second : 3

first : 3
second : 1

程序2:


// C++ program to search 'unordered map' container 
#include <iostream> 
#include <unordered_map> 
using namespace std; 
  
// Rename 'unordered_map<int, char>' as 'gfg' 
typedef unordered_map<char, char> gfg; 
  
  
int main() 
{ 
    // 'g' is object 
    gfg g; 
      
    // Container values 
    // Contents are look like [a, b] [c, d] [e, f] 
    g.insert(gfg::value_type('a', 'b')); 
    g.insert(gfg::value_type('b', 'd')); 
    g.insert(gfg::value_type('e', 'f')); 
  
    // Look into the syntax part above 
    // here 'f' is key 
    pair<gfg::iterator, gfg::iterator> p1 = g.equal_range('f'); 
      
    // 'f' is not exits, so no output for 'f' 
    cout << "search for 'f' :"; 
    for (; p1.first != p1.second; ++p1.first) { 
        cout << p1.first->first << ", " << p1.first->second << endl; 
    } 
      
    // Successful search 
    // Here 'a' is key 
    p1 = g.equal_range('a'); 
      
    // 'a' is exits, so it searched successfully 
    cout << "\nsearch for 'a' : ["; 
    for (; p1.first != p1.second; ++p1.first) { 
        cout << p1.first->first << ", " << p1.first->second << "]"; 
    } 
      
    return 0; 
} 
輸出:
search for 'f' :
search for 'a' : [a, b]

複雜:

  • 平均情況:元素數量與鍵 k 成線性關係,鍵 k 是常數。
  • 最壞的情況下:與容器的大小成線性關係。


相關用法


注:本文由純淨天空篩選整理自SoumikMondal大神的英文原創作品 unordered_map equal_range in C++。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。