gpt4 book ai didi

c++ - 我如何散列 std::regex?

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

我需要散列一个类,它有一个 std::regex 作为成员,它是从类的构造函数中的字符串初始化的。

为了获得类的良好散列,我可以将模式字符串的散列存储在构造函数中,或者——首选方式——计算正则表达式本身的散列。这可能吗(最好没有提升)?

更准确地说:我想计算

std::hash<std::regex>{}(m_regex);

其中 m_regex 是 std::regex 类型,但 std::regex 的模板特化不存在。

非常感谢您的帮助。

最佳答案

不能散列一个 std::regex 对象,因为假定它有一个 internal representation(可能不可移植)。请记住 std::regex 对象带有一些 other information 。如果您正在考虑使用用于构造对象(或分配)的正则表达式模式字符串,您仍然不能,因为您无法检索用于构造 std::regex 对象的字符串,因为 it isn't required存储字符串。


一个可能的解决方法是保存用于构造 std::regex 对象的字符串和 flags,然后在需要时构造一个 regex 对象。

关于c++ - 我如何散列 std::regex?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41924642/

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