写一个哈希表c++模板类
时间: 2023-10-20 10:05:18 浏览: 144
以下是一个简单的哈希表 C++ 模板类的实现:
```cpp
#include <iostream>
#include <list>
template <typename K, typename V>
class HashTable {
private:
std::list<std::pair<K, V>>* table;
int capacity;
int hashFunction(const K& key) {
// 自定义哈希函数
return key % capacity;
}
public:
HashTable(int size = 100) {
capacity = size;
table = new std::list<std::pair<K, V>>[capacity];
}
~HashTable() {
delete[] table;
}
void insert(const K& key, const V& value) {
int index = hashFunction(key);
table[index].push_back(std::make_pair(key, value));
}
bool find(const K& key, V& value) {
int index = hashFunction(key);
for (auto& i : table[index]) {
if (i.first == key) {
value = i.second;
return true;
}
}
return false;
}
void remove(const K& key) {
int index = hashFunction(key);
for (auto i = table[index].begin(); i != table[index].end(); i++) {
if (i->first == key) {
table[index].erase(i);
break;
}
}
}
};
int main() {
HashTable<int, std::string> ht(10);
ht.insert(1, "one");
ht.insert(2, "two");
ht.insert(11, "eleven");
std::string value;
if (ht.find(11, value)) {
std::cout << value << std::endl;
}
ht.remove(2);
return 0;
}
```
该哈希表模板类使用了 STL 中的 `list` 容器来实现链表,`std::pair` 存储键值对,使用了自定义哈希函数来计算索引。可以根据需要自定义哈希函数。
阅读全文