c++ - 我可以对向量进行排序以匹配 unordered_map 的排序吗?
问题描述
我可以对 a 进行排序以vector
使其匹配 a 的排序unordered_map
吗?我想遍历unordered_map
并且如果我只能遍历每个容器一次以找到它们的交集,而不是必须搜索每个键。
例如,给定一个unordered_map
包含:
1、2、3、4、5、6、7、8、9
按以下顺序散列:
1、3、4、2、5、7、8、6、9
我想要一个vector
:
1、2、3、4
我可以以某种方式提取用于排序的unordered_map
排序,vector
因此它将排序为:
1、3、4、2
有没有办法做到这一点?我注意到unordered_map
确实提供了它hash_function
,我可以使用它吗?
解决方案
正如评论正确指出的那样,甚至没有远程可移植的匹配排序方式unordered_map
。所以,排序是未指定的。
然而,在未指定的领域,有时出于各种原因,我们可以对我们的实现所做的任何事情感到很酷,即使未指定且不可移植。那么,有人可以查看您的地图实现并使用它在矢量上的确定性吗?
问题unordered_map
在于它是一个哈希。插入其中的每个元素都将被散列,散列(映射到键空间)用作内部数组中的索引。这看起来很有希望,如果不发生碰撞,这将是有希望的。如果发生键冲突,则将元素放入冲突列表中,并且该列表根本不排序。因此,冲突的迭代顺序将由插入的顺序(反向或直接)确定。因此,如果没有插入顺序的信息,就不可能模仿 的顺序unordered_map
,即使对于特定的实现也是如此。
推荐阅读
- pandas - Koalas GroupBy > Apply > Lambda > 系列
- ios - SwiftUI 成功后自动转到下一个视图
- ios - iPhone XR 中的 WKWebView 重叠状态栏
- ios - 在 Swift 中,我如何知道单词是否包含在 UILabel 中
- python-3.x - Python 3 Pandas,将数据附加到现有的 Excel 工作表
- python - Web-scraping:访问大列表中的文本信息
- vue.js - 父更新时VUE Js子不更新
- visual-studio - 在 Visual Studio 2020 中构建时,在第一次构建错误时停止而不安装任何扩展
- linux - 将 PDF 与文件名中的空格结合起来
- python - 如何获得数字 = [“12”、“145”、“45”、“12.4”、“45,14”、“15 645”] 数字