哈希表通讯录c++代码
时间: 2024-10-26 13:02:10 浏览: 26
哈希表(Hash Table)在 C++ 中通常用于存储键值对的数据结构,比如实现通讯录功能。以下是一个简单的例子,使用 `unordered_map` 容器作为哈希表,它提供 O(1) 的平均时间复杂度查找、插入和删除:
```cpp
#include <iostream>
#include <unordered_map>
class Contact {
public:
std::string name;
std::string phone_number;
// 构造函数
Contact(const std::string& name, const std::string& phone_number)
: name(name), phone_number(phone_number) {}
};
class AddressBook {
private:
std::unordered_map<std::string, Contact> contacts; // 哈希表,键为名字,值为Contact对象
public:
// 插入联系人
void addContact(const std::string& name, const std::string& phone_number) {
contacts[name] = Contact(name, phone_number);
}
// 根据名字查找联系人
Contact* findContact(const std::string& name) {
auto it = contacts.find(name);
if (it != contacts.end()) {
return &(*it).second; // 如果找到则返回引用,否则返回nullptr
}
return nullptr;
}
// 删除联系人(这里简化了实现,实际操作需要删除对应的键值对)
void removeContact(const std::string& name) {
contacts.erase(name);
}
};
int main() {
AddressBook address_book;
address_book.addContact("Alice", "12345678");
address_book.addContact("Bob", "98765432");
// 查找联系人
Contact* contact = address_book.findContact("Alice");
if (contact) {
std::cout << "Found Alice: Name - " << contact->name << ", Phone - " << contact->phone_number << std::endl;
} else {
std::cout << "Alice not found." << std::endl;
}
// 删除联系人
address_book.removeContact("Bob");
return 0;
}
```
阅读全文