class std::unordered_map<std::__cxx11::basic_string<char>, void*>’ has no member named ‘contains’
时间: 2024-09-13 20:08:15 浏览: 126
您遇到的错误信息表明您尝试在一个`std::unordered_map`类型的对象上调用`contains`方法,但是这个方法在您使用的C++标准库版本中不存在。`contains`方法是在C++20标准中引入的,用于检查容器中是否包含指定的键。
在C++20之前,要检查一个键是否存在于`unordered_map`中,您需要使用`find`方法。`find`方法会返回一个迭代器指向找到的元素,如果键不存在,则返回`end()`迭代器。下面是如何使用`find`方法来检查键是否存在:
```cpp
#include <unordered_map>
#include <string>
std::unordered_map<std::string, void*> myMap;
// ...
if (myMap.find("key") != myMap.end()) {
// 键 "key" 存在于 map 中
} else {
// 键 "key" 不存在于 map 中
}
```
如果您使用的是C++20或更高版本,您可以直接使用`contains`方法:
```cpp
if (myMap.contains("key")) {
// 键 "key" 存在于 map 中
} else {
// 键 "key" 不存在于 map 中
}
```
确保您使用的编译器支持C++20,并且在编译时启用了C++20标准,否则即使C++20已经发布,您也无法使用`contains`方法。您可以通过在编译时添加`-std=c++20`标志来启用C++20标准。
阅读全文