此错误通常是由于未定义哈希函数或键相等运算符导致的。解决此问题的方法是在集合类型的定义中提供自己的哈希函数和键相等运算符,以确保unordered_set类型可以正确地工作。以下是一个示例:
struct MyStruct {
int id;
string name;
bool operator==(const MyStruct& other) const {
return id == other.id && name == other.name;
}
};
class MyHash {
public:
size_t operator()(const MyStruct& ms) const {
size_t h1 = std::hash()(ms.id);
size_t h2 = std::hash()(ms.name);
return h1 ^ h2;
}
};
int main() {
std::unordered_set mySet;
MyStruct s{1, "John"};
mySet.insert(s);
return 0;
}