std::multimap<Key,T,Compare,Allocator>::equal_range
來自 cppreference.com
std::pair<iterator, iterator> equal_range( const Key& key ); |
(1) | |
std::pair<const_iterator, const_iterator> equal_range( const Key& key ) const; |
(2) | |
template< class K > std::pair<iterator, iterator> equal_range( const K& x ); |
(3) | (C++14 起) |
template< class K > std::pair<const_iterator, const_iterator> equal_range( const K& x ) const; |
(4) | (C++14 起) |
返回包含容器中所有給定鍵的元素的範圍。該範圍由兩個迭代器定義,一個指向不小於 key 的第一個元素,另一個指向大於 key 的第一個元素。或者,第一個迭代器可以透過 lower_bound() 獲得,第二個迭代器可以透過 upper_bound() 獲得。
1,2) 將鍵與 key 進行比較。
3,4) 將鍵與值 x 進行比較。此過載僅在限定 ID Compare::is_transparent 有效且表示一個型別時才參與過載決議。它允許在不構造
Key
例項的情況下呼叫此函式。目錄 |
[編輯] 引數
鍵 | - | 用於比較元素的鍵值 |
x | - | 可與Key 比較的替代值 |
[編輯] 返回值
std::pair,包含一對定義所需範圍的迭代器:第一個迭代器指向不小於 key 的第一個元素,第二個迭代器指向大於 key 的第一個元素。
如果沒有元素不小於 key,則將末尾後一個(參見 end())迭代器作為第一個元素返回。類似地,如果沒有元素大於 key,則將末尾後一個迭代器作為第二個元素返回。
由於 |
(C++11 起) |
[編輯] 複雜度
容器大小的對數級別。
注意
特性測試宏 | 值 | 標準 | 特性 |
---|---|---|---|
__cpp_lib_generic_associative_lookup |
201304L |
(C++14) | 針對過載 (3,4),關聯容器中的異構比較查詢 |
[編輯] 示例
執行此程式碼
#include <iostream> #include <map> int main() { std::multimap<int, char> dict { {1, 'A'}, {2, 'B'}, {2, 'C'}, {2, 'D'}, {4, 'E'}, {3, 'F'} }; auto range = dict.equal_range(2); for (auto i = range.first; i != range.second; ++i) std::cout << i->first << ": " << i->second << '\n'; }
輸出
2: B 2: C 2: D
[編輯] 另請參閱
查詢具有特定鍵的元素 (公共成員函式) | |
(C++20) |
檢查容器是否包含具有特定鍵的元素 (公共成員函式) |
返回匹配特定鍵的元素數量 (公共成員函式) | |
返回指向第一個大於給定鍵的元素的迭代器 (公共成員函式) | |
返回指向第一個不小於給定鍵的元素的迭代器 (公共成員函式) | |
返回與特定鍵匹配的元素範圍 (函式模板) |