1、设计一个通讯录容器保存读者信息。其中应该实现一般通讯录中的基本信息(新增、删除),也需要实现不同的检索功能(姓名、电话等)。
时间: 2023-05-17 20:02:35 浏览: 52
可以使用一个数组或者链表来实现通讯录容器,每个元素保存一个读者的信息,包括姓名、电话、地址等基本信息。新增读者可以在数组或链表的末尾添加一个元素,删除读者可以根据姓名或电话等信息在数组或链表中查找并删除对应的元素。检索功能可以实现姓名或电话的模糊匹配,比如可以使用字符串匹配算法(如KMP算法)来实现。同时,可以考虑使用哈希表等数据结构来加速检索操作。具体实现可以参考以下代码:
```
class Contact {
public:
struct Reader {
string name;
string phone;
string address;
};
void addReader(const Reader& reader) {
readers.push_back(reader);
}
void removeReader(const string& name) {
for (auto it = readers.begin(); it != readers.end(); ++it) {
if (it->name == name) {
readers.erase(it);
return;
}
}
}
vector<Reader> searchByName(const string& name) {
vector<Reader> result;
for (const auto& reader : readers) {
if (reader.name.find(name) != string::npos) {
result.push_back(reader);
}
}
return result;
}
vector<Reader> searchByPhone(const string& phone) {
vector<Reader> result;
for (const auto& reader : readers) {
if (reader.phone.find(phone) != string::npos) {
result.push_back(reader);
}
}
return result;
}
private:
vector<Reader> readers;
};
```
这个代码实现了一个简单的通讯录容器,包括新增、删除、按姓名和电话检索等功能。可以通过调用addReader、removeReader、searchByName和searchByPhone等方法来操作通讯录。