c++ map和unorder_map 的区别
map:
实现是红黑树,map内部所有的数据都是有序的,map的查询、插入、删除操作的时间复杂度都是O(logn)
map的key需要定义operator <,对于一般的数据类型已被系统实现,若是用户自定义的数据类型,则要重新定义该操作符。
unorder_map
实现是哈希表,无序,插入,查找:时间复杂度为O(1) **unordered_map的key需要定义hash_value函数并且重载operator ==。**对于一般的数据类型已被系统实现,若是用户自定义的数据类型,则要重新定义该操作符。
如果key没实现以上两个编译就会出现错误:
use of deleted function 'std::unordered_map<_Key, _Tp, _Hash, _Pred, _Alloc>::unordered_map() [with _Key = std::vector<int>; _Tp = int; _Hash =
std::hash<std::vector<int> >; _Pred = std::equal_to<std::vector<int> >; _Alloc = std::allocator<std::pair<const std::vector<int>, int> >]'
哈希表最大的优点,就是把数据的存储和查找消耗的时间大大降低,时间复杂度为O(1); 而代价仅仅是消耗比较多的内存。哈希表的查询时间虽然是O(1),但是并不是unordered_map查询时间一定比map短,因为实际情况中还要考虑到数据量,而且unordered_map的hash函数的构造速度也没那么快,所以不能一概而论,应该具体情况具体分析
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· winform 绘制太阳,地球,月球 运作规律
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人