[C++] 有序容器与无序容器

本文对比了C++中的有序容器map/multimap和无序容器unordered_map/unordered_multimap。有序容器内部使用红黑树,保持元素排序,适合对顺序有要求的场景;无序容器采用散列表,提供快速查询(O(1)),但插入效率略低。文章讨论了两者在头文件、优缺点等方面的区别,并提供了STL参考。
摘要由CSDN通过智能技术生成

有序容器 map/multimapset/multiset 内部采用红黑树实现,插入元素时自动排序,可采用中序遍历从小到大遍历元素。

C++11 增加了无序容器 unordered_map/unordered_multimapunordered_set/unordered_multiset。内部采用散列表存储数据,通过Hash函数实现元素的快速操作,同时元素的存储是无序的。

对比map和unordered_map

1 包含的头文件不同

map:

#include < map >

unordered_map:

#include < unordered_map >

2 map的优缺点

优点:

  • 有序性,适用于对数据顺序有要求的场合;
  • 整体效率很高,红黑树基本可以在O(logn)的时间复杂度完成绝大多数操作;

缺点:

  • 红黑树的结构导致其空间占用率必然会高一些;

unordered_map 的优缺点

优点:

  • 利用hash表实现O(1)时间复杂度的查询操作,效率非常高;<
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值