我可以对vector
进行排序,使其与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
的顺序。
关于c++ - 我可以对 vector 进行排序以匹配unordered_map的排序吗?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/50455424/