C++ åèæå
- C++11
- C++14
- C++17
- C++20
- C++ ç¼è¯å¨æ¯ææ åµè¡¨
- ç¬ç«ä¸å®¿ä¸»å®ç°
- C++ è¯è¨
- C++ å ³é®è¯
- é¢å¤çå¨
- C++ æ ååºå¤´æä»¶
- å ·åè¦æ±
- åè½ç¹æ§æµè¯ (C++20)
- å·¥å ·åº
- ç±»åæ¯æï¼åºæ¬ç±»åãRTTIãç±»åç¹æ§ï¼
- æ¦å¿µåº (C++20)
- é误å¤ç
- 卿å å管ç
- æ¥æåæ¶é´å·¥å ·
- å符串åº
- 容å¨åº
- std::array
- std::vector
- std::map
- std::map<Key,T,Compare,Allocator>::emplace
- std::map<Key,T,Compare,Allocator>::get_allocator
- std::map<Key,T,Compare,Allocator>::at
- std::map<Key,T,Compare,Allocator>::operator[]
- std::map<Key,T,Compare,Allocator>::begin, std::map<Key,T,Compare,Allocator>::cbegin
- std::map<Key,T,Compare,Allocator>::end, std::map<Key,T,Compare,Allocator>::cend
- std::map<Key,T,Compare,Allocator>::extract
- std::map<Key,T,Compare,Allocator>::merge
- std::map<Key,T,Compare,Allocator>::try_emplace
- std::map<Key,T,Compare,Allocator>::insert_or_assign
- std::map<Key,T,Compare,Allocator>::clear
- std::map<Key,T,Compare,Allocator>::map
- std::map<Key,T,Compare,Allocator>::~map
- std::map<Key,T,Compare,Allocator>::operator=
- std::map<Key,T,Compare,Allocator>::rbegin, std::map<Key,T,Compare,Allocator>::crbegin
- std::map<Key,T,Compare,Allocator>::rend, std::map<Key,T,Compare,Allocator>::crend
- std::map<Key,T,Compare,Allocator>::empty
- std::map<Key,T,Compare,Allocator>::size
- std::map<Key,T,Compare,Allocator>::max_size
- std::map<Key,T,Compare,Allocator>::insert
- std::map<Key,T,Compare,Allocator>::emplace_hint
- std::map<Key,T,Compare,Allocator>::erase
- std::map<Key,T,Compare,Allocator>::swap
- std::map<Key,T,Compare,Allocator>::count
- std::map<Key,T,Compare,Allocator>::find
- std::map<Key,T,Compare,Allocator>::contains
- std::map<Key,T,Compare,Allocator>::equal_range
- std::map<Key,T,Compare,Allocator>::lower_bound
- std::map<Key,T,Compare,Allocator>::upper_bound
- std::map<Key,T,Compare,Allocator>::key_comp
- std::map<Key,T,Compare,Allocator>::value_comp
- std::swap(std::map)
- std::erase_if (std::map)
- operator==,!=,<,<=,>,>=,<=>(std::map)
- std::map çæ¨å¯¼æå¼
- std::map<Key,T,Compare,Allocator>::value_compare
- std::unordered_map
- std::priority_queue
- std::span
- std::forward_list
- std::deque
- std::list
- std::set
- std::multiset
- std::multimap
- std::unordered_set
- std::unordered_multiset
- std::unordered_multimap
- std::stack
- std::queue
- std::vector<bool>
- ç»ç¹ææ (C++17)
- 注é
- è¿ä»£å¨åº
- èå´åº (C++20)
- ç®æ³åº
- æ°å¼åº
- è¾å ¥/è¾åºåº
- æä»¶ç³»ç»åº
- æ¬å°ååº
- æ£å表达å¼åº
- ååæä½åº
- çº¿ç¨æ¯æåº
- å®éªæ§ C++ ç¹æ§
- æç¨çèµæº
- ç´¢å¼
- std 符å·ç´¢å¼
- åç¨æ¯æ (C++20)
- C++ å ³é®è¯
ä½ç½®ï¼é¦é¡µ > C++ åèæå >容å¨åº >std::map > std::map<Key,T,Compare,Allocator>::equal_range
std::map<Key,T,Compare,Allocator>::equal_range
| 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() è·å¾ã
key ãx ãæ¤éè½½ä»
è¥æéå® id Compare::is_transparent 忳䏿代ä¸ä¸ªç±»åæåä¸éè½½å³è®®ãå®ä»¬å
许è°ç¨æ¤å½æ°è䏿é Key çå®ä¾ã| æ¬èæªå®æ åå ï¼è§£éä¸ºä½æ´å¥½ |
åæ°
| key | - | è¦æ¯è¾å ç´ çå ³é®å¼ |
| x | - | è½ä¸ Key æ¯è¾çæ¿ç¨å¼
|
è¿åå¼
å«ä¸å¯¹å®ä¹æéèå´çè¿ä»£å¨ç std::pair ï¼ç¬¬ä¸ä¸ªæåé¦ä¸ªä¸å°äº key çå
ç´ ï¼ç¬¬äºä¸ªæåé¦ä¸ªå¤§äº key çå
ç´ ã
è¥æ å
ç´ ä¸å°äº key ï¼åå°å°¾åï¼è§ end() ï¼è¿ä»£å¨ä½ä¸ºç¬¬ä¸å
ç´ è¿åã类似å°ï¼è¥æ å
ç´ å¤§äº key ï¼åå°å°¾åè¿ä»£å¨ä½ä¸ºç¬¬äºå
ç´ è¿åã
å¤æåº¦
ä¸å®¹å¨å¤§å°æå¯¹æ°ã
示ä¾
#include <map> #include <iostream> Â int main() { const std::map<int, const char*> m{ { 0, "zero" }, { 1, "one" }, { 2, "two" }, }; Â { auto p = m.equal_range(1); for (auto& q = p.first; q != p.second; ++q) { std::cout << "m[" << q->first << "] = " << q->second << '\n'; } Â if (p.second == m.find(2)) { std::cout << "end of equal_range (p.second) is one-past p.first\n"; } else { std::cout << "unexpected; p.second expected to be one-past p.first\n"; } } Â { auto pp = m.equal_range(-1); if (pp.first == m.begin()) { std::cout << "pp.first is iterator to first not-less than -1\n"; } else { std::cout << "unexpected pp.first\n"; } Â if (pp.second == m.begin()) { std::cout << "pp.second is iterator to first element greater-than -1\n"; } else { std::cout << "unexpected pp.second\n"; } } Â { auto ppp = m.equal_range(3); if (ppp.first == m.end()) { std::cout << "ppp.first is iterator to first not-less than 3\n"; } else { std::cout << "unexpected ppp.first\n"; } Â if (ppp.second == m.end()) { std::cout << "ppp.second is iterator to first element greater-than 3\n"; } else { std::cout << "unexpected ppp.second\n"; } } }
è¾åºï¼
m[1] = one end of equal_range (p.second) is one-past p.first pp.first is iterator to first not-less than -1 pp.second is iterator to first element greater-than -1 ppp.first is iterator to first not-less than 3 ppp.second is iterator to first element greater-than 3
åé
| 寻æ¾å¸¦æç¹å®é®çå
ç´ (å ¬å¼æå彿°) | |
| è¿åæåé¦ä¸ªå¤§äºç»å®é®çå
ç´ çè¿ä»£å¨ (å ¬å¼æå彿°) | |
| è¿åæåé¦ä¸ªä¸å°äºç»å®é®çå
ç´ çè¿ä»£å¨ (å ¬å¼æå彿°) |