C++ std::hash 获得字符串哈希值

网友投稿 479 2022-08-23

C++ std::hash 获得字符串哈希值

定义于头文件 string

template<> struct hashstd::string;

template<> struct hashstd::wstring; template<> struct hashstd::u16string;

template<> struct hashstd::u32string; (C++11 起)

template<> struct hashstd::pmr::string;

template<> struct hashstd::pmr::wstring; template<> struct hashstd::pmr::u16string;

template<> struct hashstd::pmr::u32string; (C++17 起)

template<> struct hashstd::u8string; template<> struct hashstd::pmr::u8string; (C++20 起)

std::hash 对各种字符串类的模板特化允许用户获得字符串的哈希。

这些哈希等于对应 std::basic_string_view 类的哈希:若 S 是这些字符串类型之一, SV 是对应的字符串视图类型,而 s 是 S 类型的对象,则 std::hash< s >()(s) == std::hash()(SV(s)) 。 (C++17 起)

示例

下列代码显示 string 上使用的散列函数的一种可能输出:

#include #include #include #include #include using namespace std::literals; int main(){ auto sv = "Stand back! I've got jimmies!"sv; std::string s(sv); std::pmr::string pmrs(sv); // 使用默认分配器 std::cout << std::hash{}(sv) << '\n'; std::cout << std::hash{}(s) << '\n'; std::cout << std::hash{}(pmrs) << '\n';}

可能的输出:

3544599705012401047 3544599705012401047 3544599705012401047

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:汽车营销走到了十字路口?(我眼中的汽车市场营销)
下一篇:营销“翻车”厂家更该反思!
相关文章

 发表评论

暂时没有评论,来抢沙发吧~