马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
本帖最后由 zhangjinxuan 于 2022-11-24 08:18 编辑
关于 unordered_map 和 map,我有以下几个问题:
1. unordered_map 的最坏空间复杂度?(我很关心,就怕有时候用上会MLE)
2. unordered_map 的最坏时间复杂度真的是 O(1) 吗?
3. 竞赛中使用 unordered_map 会不会出问题?我听某些人说会出问题
4. map 的最坏时间复杂度? (我很关心,就怕有时候用上会TLE)
5. map 的最坏空间复杂度?
6. 推荐嵌套 map 或 unordered_map 吗?例如写成:map<int, map<int, bool>> a;
7. map 是不是有序的,unordered_map 即使无序那有没有什么排序规律呢?
8. 这两个哪一个更好一些?
不好意思,问题有点多,回答的问题数量过 75% 我就可以给最佳答案,希望大佬给予详细解答,感谢
本帖最后由 yuxijian2020 于 2022-11-24 10:11 编辑
unordered_map 内部是 哈希(STL内部hash函数只有字符串类型)
map 内部是红黑树
至于竞赛使用会不会出问题.... 只能说出问题的永远是人....
最坏时间复杂度的问题和它们的内部数据结构时一样的,不需要质疑
map 是红黑树,所以没有最坏情况 时间复杂度永远是 O(logn)
unordered_map 是hash 最好O(1),最坏O(n)
是否有序 map是红黑树所以有序,unordered_map是hash所以无序,有没有规律那肯定是有的,但是hash函数肯定是尽量复杂以保证较少的出现hash冲突
哪个更好?没有最好的数据结构只有最适合的
map 有序,空间复杂度比unorder_map低
unorder_map 空间复杂度比map高,执行效率比map高
至于最坏空间复杂度,最大占用空间?我没太明白交给大佬解决....
|