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

Cannot compile unordered_set contains function from cppreference.com

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

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

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

据我所知,包含 contains() 成员函数的提案的最新版本是 P0919r3. You can check the C++20 implementation status for GCC here。如果你这样做,你会看到,在撰写本文时,它还没有实现……

正如您在 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)) { ... }