作者热门文章
- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我需要散列一个类,它有一个 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/
我是一名优秀的程序员,十分优秀!