我觉得这只会发生在我身上,但是当我查找unordered_set的contains函数时,发现了一个奇怪的地方。这是我尝试在here
下运行示例的链接在我看来,contains()不存在,但是它确实存在吗?我在编译器上也遇到相同的错误。 std库丢失了神经元吗?
答案 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)) { ... }