c++ map multimap unordered_map
时间: 2023-11-04 22:05:15 浏览: 36
map和unordered_map是C++中的两种常用容器,它们都用于存储键值对。map是一种单重映射表,即每个键只能映射到一个值,而unordered_map则是一种哈希表,不保证元素的顺序。multimap和unordered_multimap相比,允许键重复,即一个键可以对应多个值。
使用map和unordered_map需要包含头文件<map>和<unordered_map>。
map和multimap的底层实现类似,都是红黑树(一种自平衡的二叉搜索树),而unordered_map和unordered_multimap采用的是哈希表。
与map相比,unordered_map的插入、查找和删除操作更快,因为哈希表使用哈希函数对键进行散列,可以直接定位到对应的槽位。但unordered_map的内存消耗较大,并且不保证元素的顺序。
相关问题
c++multimap和unordered_map
multimap是一个允许元素重复的关联容器,它的内部实现也是使用红黑树。它可以在插入时按照特定的顺序进行排序,并且可以包含相同的键。在C++中,我们可以使用multimap来存储一组键值对,其中键可以重复。例如,我们可以使用multimap来存储不同班级的学生名字,每个班级可能有多个相同名字的学生。使用multimap时,我们可以通过迭代器遍历其中的元素。
unordered_map是一个使用哈希表实现的关联容器,它不允许重复的键。与multimap不同,unordered_map不会对元素进行排序。它的插入和查找操作的时间复杂度都是O(1)。unordered_map适用于需要快速查找和插入元素的情况。例如,我们可以使用unordered_map来存储员工的姓名和工资,通过姓名快速查找对应的工资。使用unordered_map时,我们可以使用迭代器遍历其中的元素。
所以,如果你需要允许重复的键并且需要按照特定顺序来存储元素,你可以使用multimap。如果你不需要重复的键并且希望在常量时间内进行查找和插入操作,你可以使用unordered_map。<span class="em">1</span><span class="em">2</span><span class="em">3</span>
#### 引用[.reference_title]
- *1* [C++ STL multimap与unordered_map](https://blog.csdn.net/yao_hou/article/details/107419196)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"]
- *2* *3* [C++ STL库中的multimap和unordered_multimap](https://blog.csdn.net/Woosual/article/details/107884396)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"]
[ .reference_list ]
map c++ unordered_map multimap
map和unordered_map是C++中的两种容器,用于存储键值对。map中的key不允许重复,是单重映射表;而multimap中的key允许重复,是多重映射表。
map和multimap的区别在于底层实现和特性。map是基于红黑树实现的,它保证了元素按照key的大小有序排列;而multimap同样基于红黑树实现,但允许相同的key存在。
unordered_map和unordered_multimap是基于哈希表实现的,它们的查找、插入和删除操作都具有常数时间复杂度。这意味着在对访问速度有要求的情况下,我们可以优先选择使用unordered_map。而在考虑到空间大小对程序影响的时候,我们可以优先选择使用map。
综上所述,map适用于需要有序存储且不允许重复key的情况,unordered_map适用于对访问速度有要求的情况,multimap适用于允许重复key的情况。<span class="em">1</span><span class="em">2</span><span class="em">3</span>
#### 引用[.reference_title]
- *1* *2* *3* [c++中map、multimap、unordered_map、unordered_multimap的区别](https://blog.csdn.net/lyn631579741/article/details/122052598)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 100%"]
[ .reference_list ]