gpt4 book ai didi

c++ - 如何使用整数数组作为 unordered_map 的键

转载 作者:搜寻专家 更新时间:2023-10-31 01:52:40 33 4
gpt4 key购买 nike

我想使用整数数组作为 unordered_map 的键。基本思想是我有许多不同的问题状态,它们表示为 int state[16]。数组的值是从 0 到 15 的数字排列,例如:

a= { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}; 
b= { 14, 1, 9, 6, 4, 8, 12, 5, 7, 2, 3, 0, 10, 11, 13, 15}; ...

那些将是 unordered_map 中的键(值将是一个包含其他内容的类)。我怎样才能做到这一点?我是否需要实现一个新的散列函数来比较这些值,或者我可以使用 C++ 提供的一些散列函数?我的目标是将其用作哈希表,还有其他更好的选择吗?

最佳答案

16!大约为 2*10^13,因此您可以将排列的序数存储在 64 位整数中并将其用作映射键,而无需存储或散列排列。

参见 http://en.wikipedia.org/wiki/Permutation#Numbering_permutations对于 0 ... N-1 和数字 0 ... N 的排列之间的自然双射! - 1.

或者,您可以只使用std::map;排列将有效地按字典顺序进行比较。

第三种选择是使用 std::string 作为键,因为您的值很容易适合 charstd::hash 专门用于 std::string

关于c++ - 如何使用整数数组作为 unordered_map 的键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12278879/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com