改成模板,可以支持字符串
时间: 2024-09-13 14:08:50 浏览: 28
如果你想要将上述的`std::unordered_map`类改为一个模板,以便支持任意类型的键和值,你可以这样做:
```cpp
template <typename Key, typename T>
class KeyValueStore {
private:
std::unordered_map<Key, T> data;
public:
// 插入键值对
void insert(const Key& key, const T& value) {
data[key] = value;
std::cout << "Inserted: (" << key << ", " << value << ")\n";
}
// 获取值
T get(const Key& key) const {
if (data.find(key) != data.end()) {
return data[key];
} else {
std::cerr << "Key not found: " << key << "\n";
// 返回默认值或抛出异常处理找不到的情况
return T{}; // 未提供默认值时,这里会报错
}
}
// 删除键值对
bool remove(const Key& key) {
auto it = data.find(key);
if (it != data.end()) {
data.erase(it);
return true;
} else {
return false;
}
}
// 打印所有键值对
void print() const {
for (const auto& pair : data) {
std::cout << "Key: " << pair.first << ", Value: " << pair.second << "\n";
}
}
};
```
现在,这个模板类`KeyValueStore`就可以接受任何类型的`Key`和`T`了,比如`std::string`作为键,任何其他类型如`int`, `double`等作为值。
阅读全文