无法编译unordered_set包含来自cppreference.com的函数

问题描述 投票:1回答:2

我觉得这只会发生在我身上,但这是我在查找unordered_set的contains函数时发现的奇怪之处。这是我尝试在here下面运行示例的链接

enter image description here

对我来说这似乎很奇怪,contains()不存在但它确实存在?我的编译器也遇到了同样的错误。 std库是否失去了神经元?

c++ unordered-set
2个回答
2
投票

编译器附带的标准库很可能只是不支持此功能。 contains()是在C ++ 20中添加的。 C ++ 20还没有出来......

据我所知,包含contains()成员函数的道具的最新版本是P0919r3。您可以检查GCC here的C ++ 20实现状态。如果你这样做,你会发现,在撰写本文时,它还没有实现......


1
投票

正如您在cppreference上看到的那样,此成员函数仅支持来自C ++ 20。

幸运的是,有一个简单的解决方法:

if(example.find(2)!=example.end()) {...}

如果这太过分了,你可以定义:

template <class C, class T>
bool contains (C &c, T t) {
    return c.find(t)!=c.end(); 
}

和写

if(contains(example,2)) { ... }
© www.soinside.com 2019 - 2024. All rights reserved.