我可以对向量进行排序以匹配unordered_map的排序吗?
Can I sort a vector to match the sorting of an unordered_map?
我可以对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
的问题在于它是一个哈希值。插入其中的每个元素都将被散列,hash(映射到键空间(用作内部数组中的索引。这看起来很有希望,如果不是为了碰撞,这将是有希望的。在键冲突的情况下,元素被放入碰撞列表中,并且此列表根本不排序。因此,碰撞上的迭代顺序将由插入的顺序(反向或直接(决定。正因为如此,如果没有插入顺序的信息,即使对于特定的实现,也不可能模仿unordered_map
的顺序。
相关文章:
- 二叉排序树无法编译
- 仅使用绝对值对数组进行排序,并在C++中显示实际值
- C++选择排序算法中的逻辑错误
- 使用C++程序合并排序没有得到正确的输出
- 计算排序向量的向量中唯一值的计数
- 排序算法c++
- 使用2个键的cpp-stl::优先级队列排序不正确
- 将结构向量排序为子组
- 在c++中尝试对对象数组进行排序时,出现std:bad_alloc错误
- 如何对点云数据进行排序
- 对字符串进行排序时,在c++中处理sort()
- 是否有类似std::lower_bound的函数,而不需要排序/分区输入
- 下面是排序算法O(n)吗
- std::sort()函数无法对向量的一部分进行排序
- shell排序中的交换和比较
- clang格式:禁用排序包含
- 显示错误输出的简单数组排序程序
- 为什么我的排序算法会更改数组值
- 试图在c++中对数字列表进行排序
- 如何在C++中对数组进行冒泡排序