c++ std::undermap 插入自定义类型
时间: 2023-08-16 18:14:30 浏览: 202
c++自定义数据类型
你好!要在C++中使用`std::unordered_map`插入自定义类型,你需要做两件事:
1. 为你的自定义类型实现哈希函数:`std::unordered_map`使用哈希函数来将键映射到特定的存储桶。你需要为你的自定义类型提供一个哈希函数,以便`std::unordered_map`可以正确地执行哈希操作。
2. 为你的自定义类型实现相等比较运算符:`std::unordered_map`使用键的相等比较运算符来检查键是否已经存在于容器中。你需要为你的自定义类型实现相等比较运算符,以确保容器可以正确地处理键的唯一性。
下面是一个示例,演示如何插入自定义类型到`std::unordered_map`中:
```cpp
#include <iostream>
#include <unordered_map>
// 自定义类型
class MyType {
public:
int value;
MyType(int val) : value(val) {}
// 哈希函数
std::size_t operator()(const MyType& obj) const {
return std::hash<int>()(obj.value);
}
// 相等比较运算符
bool operator==(const MyType& other) const {
return value == other.value;
}
};
int main() {
std::unordered_map<MyType, std::string, MyType> myMap;
// 创建自定义类型的实例
MyType key(42);
// 插入键值对
myMap[key] = "Hello, World!";
// 访问值
std::cout << myMap[key] << std::endl;
return 0;
}
```
在上面的示例中,我们创建了一个`std::unordered_map`,其中键类型为`MyType`,值类型为`std::string`。我们为`MyType`实现了哈希函数和相等比较运算符,并使用自定义类型的实例作为键插入了一个键值对。
希望这可以帮助到你!如果有任何进一步的问题,请随时提问。
阅读全文