快速访问哈希函数(不使用字符串对象)
quick access of hash function (without using string object)
下面的代码片段可以对字符串对象执行哈希值。我想得到一个二进制字符串的哈希值(指针和长度)。我知道我可以用指针和长度来构造一个字符串对象,但是为了这个,构造一个字符串会有额外的开销。不知道是否可以使用带有两个参数的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
(零开销),我想知道你实际上要保存什么?
相关文章:
- 如何删除作为C++联合的成员变量的字符串对象
- 系统C 从字符串对象sc_uint
- 为什么<string>字符串对象需要 #include 而不是字符串文本?
- 使用C 中字符串标头的getline()函数将第一个char存储在字符串对象中
- C 字符串对象错误字符
- 创建兼容的字符串对象
- 从对象数组打印字符串对象
- 将指针分配给字符串对象的第一个也是最后一个索引
- 比较字符串对象等于向量中的元素
- 传递给 std::runtime_error 的 ctor 的字符串对象的生命周期是多少?
- 如何移动 std::ostringstream 的底层字符串对象?
- 将 const 引用传递给临时字符串对象在 C++ 中安全吗?
- getline 没有为字符串对象分配任何值
- 在c++中删除字符串对象
- 如何在没有收到需要分号编译错误的情况下从 c++ 中的函数返回字符串对象
- 你能在C++中返回字符串对象的局部变量吗?
- 将字符串对象的地址传递给函数
- C++:从字符串对象中提取整数
- 是否有理由使用字符串 => 索引到向量的映射,而不是字符串 => 对象?
- 控制对多线程程序中字符串对象的访问的最佳方法