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

时间:2019-04-01 21:49:29

标签: c++ unordered-set

我觉得这只会发生在我身上,但是当我查找unordered_set的contains函数时,发现了一个奇怪的地方。这是我尝试在here

下运行示例的链接

enter image description here

在我看来,contains()不存在,但是它确实存在吗?我在编译器上也遇到相同的错误。 std库丢失了神经元吗?

2 个答案:

答案 0 :(得分:2)

编译器附带的标准库很可能还不支持此功能。 contains()是在C ++ 20中添加的。而且C ++ 20尚未推出……

据我所知,包含contains()成员函数的propsal的最新版本是P0919r3。您可以检查GCC here的C ++ 20实现状态。如果这样做,在撰写本文时,您会看到它尚未实现……

答案 1 :(得分: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)) { ... }