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 是常數。
- 最壞的情況下:與容器的大小成線性關係。
相關用法
- C++ unordered_map end( )用法及代碼示例
- C++ unordered_map emplace()用法及代碼示例
- C++ unordered_map emplace_hint()用法及代碼示例
- C++ unordered_map empty用法及代碼示例
- C++ unordered_map erase用法及代碼示例
- C++ unordered_map size()用法及代碼示例
- C++ unordered_map begin()用法及代碼示例
- C++ unordered_map reserve()用法及代碼示例
- C++ unordered_map hash_function()用法及代碼示例
- C++ unordered_map key_eq()用法及代碼示例
- C++ unordered_map count()用法及代碼示例
- C++ unordered_map bucket()用法及代碼示例
- C++ unordered_map at()用法及代碼示例
- C++ unordered_map cbegin用法及代碼示例
- C++ unordered_map cend用法及代碼示例
- C++ unordered_map clear用法及代碼示例
- C++ unordered_map find用法及代碼示例
- C++ unordered_map get_allocator用法及代碼示例
- C++ unordered_map insert用法及代碼示例
- C++ unordered_map load_factor用法及代碼示例
- C++ unordered_map max_bucket_count用法及代碼示例
- C++ unordered_map max_load_factor用法及代碼示例
- C++ unordered_map max_size用法及代碼示例
- C++ unordered_map operator[]用法及代碼示例
- C++ unordered_map rehash用法及代碼示例
注:本文由純淨天空篩選整理自SoumikMondal大神的英文原創作品 unordered_map equal_range in C++。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。