对普通整数数组使用 C++ std::hash 内置特化

Use C++ std::hash built-in specialization for plain integer array

我有 16 位整数数组形式的数据:

uint16_t a[n]

我需要一个散列函数来将这些数据存储到 unordered_set 中。现在标准库提供了一个内置的字符串特化(stringu8stringu16string、...)。我正在做的是:

std::hash<std::u16string>{}(std::u16string((char16_t*)a, n))

有没有一种方法可以使用底层哈希函数而无需创建和销毁字符串对象的开销,并且无需实现显式哈希算法(可能比标准算法更糟糕)?

编辑:我正在考虑采用一些迭代器的通用哈希专业化之类的东西,但它似乎不存在。

这正是 std::basic_string_view 的用途。正如人们所期望的那样,有一些专门的类型,其中之一是 std::u16string_view.

向构造函数传递指针和长度。然后你可以散列结果对象。