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


















