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::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::unordered_multimap<Key,T,Hash,KeyEqual,Allocator>::unordered_multimap
- std::unordered_multimap<Key,T,Hash,KeyEqual,Allocator>::~unordered_multimap
- std::unordered_multimap<Key,T,Hash,KeyEqual,Allocator>::operator=
- operator==,!=(std::unordered_multimap)
- std::swap(std::unordered_multimap)
- std::erase_if (std::unordered_multimap)
- std::unordered_multimap<Key,T,Hash,KeyEqual,Allocator>::empty
- std::stack
- std::queue
- std::vector<bool>
- ç»ç¹ææ (C++17)
- 注é
- è¿ä»£å¨åº
- èå´åº (C++20)
- ç®æ³åº
- æ°å¼åº
- è¾å ¥/è¾åºåº
- æä»¶ç³»ç»åº
- æ¬å°ååº
- æ£å表达å¼åº
- ååæä½åº
- çº¿ç¨æ¯æåº
- å®éªæ§ C++ ç¹æ§
- æç¨çèµæº
- ç´¢å¼
- std 符å·ç´¢å¼
- åç¨æ¯æ (C++20)
- C++ å ³é®è¯
ä½ç½®ï¼é¦é¡µ > C++ åèæå >容å¨åº >std::unordered_multimap > std::unordered_multimap<Key,T,Hash,KeyEqual,Allocator>::unordered_multimap
std::unordered_multimap<Key,T,Hash,KeyEqual,Allocator>::unordered_multimap
ä»åç§æ°æ®æºæé æ°å®¹å¨ãå¯éçä»¥ç¨æ·æä¾ç bucket_count 为ç¨äºå建çæå°æ¡¶æ°ï¼ä»¥ hash 为åå¸å½æ°ï¼ä»¥ equal 为æ¯è¾å
³é®ç彿°ï¼å以 alloc 为åé
å¨ã
1) æé 空容å¨ã设置
max_load_factor() 为 1.0 ã对äºé»è®¤æé 彿°ï¼æ¡¶æ°æ¯å®ç°å®ä¹çã2) æé æ¥æèå´
[first, last) çå
容ç容å¨ã设置 max_load_factor() 为 1.0 ã3) å¤å¶æé 彿°ãæé æ¥æ
other å
容坿¬ç容å¨ï¼ä¸åå¤å¶å è½½å åãè°è¯ååå¸å½æ°ãè¥ä¸æä¾ alloc ï¼åéè¿è°ç¨ std::allocator_traits<allocator_type>::select_on_container_copy_construction(other.get_allocator()) è·å¾åé
å¨ã4) ç§»å¨æé 彿°ãç¨ç§»å¨è¯ä¹æé æ¥æ
other å
容ç容å¨ãè¥ä¸æä¾ alloc ï¼åéè¿ä»å±äº other çåé
å¨ç§»å¨æé è·å¾åé
å¨ã5) æé æ¥æ initializer_list
init å
容ç容å¨ï¼å unordered_multimap(init.begin(), init.end()) ãåæ°
| alloc | - | ç¨äºæ¤å®¹å¨ææå ååé å¨çåé å¨ |
| bucket_count | - | åå§åæ¶ç¨çæå°æ¡¶æ°ãè¥ä¸æå®ï¼å使ç¨å®ç°å®ä¹çé»è®¤å¼ |
| hash | - | è¦ç¨çåå¸å½æ° |
| equal | - | ç¨äºæ¤å®¹å¨ææå ³é®æ¯è¾çæ¯è¾å½æ° |
| first, last | - | å¤å¶å ç´ æ¥æºçèå´ |
| other | - | ç¨ä½æºä»¥åå§å容å¨å ç´ çå¦ä¸å®¹å¨ |
| init | - | ç¨ä»¥åå§å容å¨å ç´ ç initializer_list |
| ç±»åè¦æ± | ||
-InputIt å¿
须满足éçè¾å
¥è¿ä»£å¨ (LegacyInputIterator) çè¦æ±ã
| ||
å¤æåº¦
1) 常æ°
2) å¹³åæ
åµä¸
first å last é´çè·ç¦»æçº¿æ§ï¼æåæ
嵿平æ¹ã3) ä¸
other çå¤§å°æçº¿æ§ã4) 常æ°ãè¥ç»å®
alloc ä¸ alloc != other.get_allocator() å为线æ§ã5) å¹³åæ
åµä¸
init çå¤§å°æçº¿æ§ï¼æåæ
嵿平æ¹ãå¼å¸¸
对 Allocator::allocate çè°ç¨å¯è½æåºã
注æ
other çå¼ç¨åè¿ä»£å¨ï¼é¤äºå°¾è¿ä»£å¨ï¼ä¿æåæ³ï¼ä½æä»£ç°äº *this ä¸çå
ç´ ãå½åæ åç± [container.requirements.general]/12 ä¸çæ»æ¬éè¿°ä½åºæ¤ä¿è¯ï¼è LWG 2321 æ£å¨èèæ´ä¸¥æ ¼çä¿è¯ã
示ä¾
| æ¬èæªå®æ åå ï¼ææ ç¤ºä¾ |
ç¼ºé·æ¥å
ä¸åæ´æ¹è¡ä¸ºçç¼ºé·æ¥å追溯å°åºç¨äºä»¥ååºçç C++ æ åã
| DR | åºç¨äº | åºçæ¶çè¡ä¸º | æ£ç¡®è¡ä¸º |
|---|---|---|---|
| LWG 2193 | C++11 | é»è®¤æé 彿°ä¸º explicit | 使ä¹ä¸ºé explicit |
