假设你有一个
你有一个
然而,似乎
std::unordered_set<std::string>
。你有一个
std::string_view
对象想要在容器中搜索。问题是,你不想从你的 std::string_view
创建一个 std::string
,因为这会有点违背使用 std::string_view
的初衷。然而,似乎
std::string_view
应该可以用作键;应该有一些方法来比较 std::string_view
和 std::string>,因为它们基本上代表相同的东西。但在 STL 中并没有这种方法。
这是个死结,我必须为我的 std::unordered_set
编写自己的比较对象,以便使用 std::string_view
和 std::string
对象吗?
编辑:这个问题特定于 string_view 对象。重复的问题与此无关。我得到了一个独特问题的独特答案,正如所预期的那样。
char*
和长度的工作。std::string_view
是C++17的一个特性,因此即使有解决方案,该问题也不太可能吸引它们。人们希望string_view
的发明包括解决这种用例(尽管如果没有也不会感到惊讶)。 - ShadowRangerstd::unordered_map/set
被专门用于std::string
类型的键,否则在这些类型上进行异构查找是不可用的(并且在不久的将来也将如此)。我承认前一个条件在重复问题中没有明确说明,但我通过简单地搜索问题标题就可以轻松找到所需的信息,以便得出这样的结论。 - Max Langhof