自定义unordered_set
时间: 2023-10-21 12:27:37 浏览: 83
要自定义一个 `unordered_set`,你需要定义一个自定义的哈希函数和相等函数。下面是一个示例,展示了如何自定义一个存储 `string` 类型的 `unordered_set`:
```cpp
#include <iostream>
#include <unordered_set>
#include <functional>
// 自定义哈希函数
struct custom_hash {
// 选择一个适合你的哈希算法
size_t operator()(const std::string& str) const {
return std::hash<std::string>{}(str);
}
};
// 自定义相等函数
struct custom_equal {
bool operator()(const std::string& str1, const std::string& str2) const {
return (str1 == str2);
}
};
int main() {
std::unordered_set<std::string, custom_hash, custom_equal> mySet;
// 添加元素
mySet.insert("apple");
mySet.insert("banana");
mySet.insert("orange");
// 遍历并输出元素
for (const auto& element : mySet) {
std::cout << element << std::endl;
}
return 0;
}
```
在上面的示例中,我们定义了 `custom_hash` 结构体作为哈希函数,并使用 `std::hash<std::string>` 作为哈希算法。然后,我们定义了 `custom_equal` 结构体作为相等函数,并使用 `==` 运算符来比较字符串是否相等。最后,我们创建了一个 `unordered_set`,其中键的类型是 `std::string`,哈希函数是 `custom_hash`,相等函数是 `custom_equal`。
你可以根据需要修改哈希函数和相等函数,以适应你的自定义类型。
阅读全文