C++ 在QHash中搜索QStringView<;QString,数据类型>;没有内存分配?

C++ 在QHash中搜索QStringView<;QString,数据类型>;没有内存分配?,c++,qt,qt5,qstring,C++,Qt,Qt5,Qstring,对文本数据进行解析后,我得到了QStringView。 我需要搜索它是否存在于QHash类型的变量中。 如果不将QStringView与QString对话,是否可能, 换言之,没有分配是否可能 我可以使用其他类似于QHash功能的Qt类型吗?有一种称为“透明映射”的技术,它支持std::map,但不支持std::unordered_map或QHash。透明映射允许使用非键类型查找元素,只要它们支持=,并且它们的哈希值相等 因为QHash不支持您遇到麻烦 没有QString构造函数允许它不将字节复

对文本数据进行解析后,我得到了
QStringView
。 我需要搜索它是否存在于
QHash
类型的变量中。 如果不将
QStringView
QString
对话,是否可能, 换言之,没有分配是否可能


我可以使用其他类似于
QHash
功能的
Qt
类型吗?

有一种称为“透明映射”的技术,它支持
std::map
,但不支持
std::unordered_map
QHash
。透明映射允许使用非键类型查找元素,只要它们支持
=
,并且它们的哈希值相等

因为
QHash
不支持您遇到麻烦

没有
QString
构造函数允许它不将字节复制到
QString

您可以将
QHash
从其他类型更改为映射。因为它不是透明的,所以该类型必须在运行时知道它是否拥有

非QT+C++可能有

using stringish = std::variant<std::string, std::string_view>;
只是要小心不要用实际的字符串视图创建一个键条目,这样做很容易,并且会导致错误

std::unordered_map<stringish, DataType, myHash, myEqual> bob
QHash<QTransparentKey<QString>, DataType>