快速访问哈希函数(不使用字符串对象)

quick access of hash function (without using string object)

本文关键字:字符串 对象 访问 哈希 函数      更新时间:2023-10-16

下面的代码片段可以对字符串对象执行哈希值。我想得到一个二进制字符串的哈希值(指针和长度)。我知道我可以用指针和长度来构造一个字符串对象,但是为了这个,构造一个字符串会有额外的开销。不知道是否可以使用带有两个参数的std哈希函数:指针和长度。

谢谢。

#include <iostream>
#include <functional>
#include <string>
int main()
{
    std::string str = "Meet the new boss...";
    std::hash<std::string> hash_fn;
    std::size_t str_hash = hash_fn(str);
    std::cout << str_hash << 'n';
}

我在堆栈溢出中发现了这篇文章,它表明底层哈希函数实际上是字符串内部缓冲区中字节的函数:

c++ std::unordered_map中使用的默认哈希函数是什么?

但是,与其冒着调用标准库内部函数的未定义行为的风险,为什么不问这个问题,"创建std::string会损失多少性能"?考虑到你总是可以创建这样一个字符串作为static const(零开销),我想知道你实际上要保存什么?