使用vector存储联系人信息可动态管理数据,通过结构体封装姓名、电话等字段,实现添加、显示、查找、删除功能,代码简洁且易扩展,适合中小型通讯录程序开发。
用C++开发一个通讯录程序,使用
vector
容器来存储联系人信息是一种常见且高效的做法。它能动态管理联系人数量,避免固定数组的大小限制。下面是一个结构清晰、功能实用的通讯录程序实现思路和代码示例。
联系人结构设计
每个联系人包含基本信息,如姓名、电话、性别、年龄、地址等。使用
来封装这些数据。
struct Person { string name; string phone; string sex; int age; string address; Person(string n, string p, string s, int a, string addr) : name(n), phone(p), sex(s), age(a), address(addr) {} };
使用vector存储联系人
vector<Person>
作为主存储容器,支持动态增删查改。
vector<Person> contacts;
常用操作包括:
立即学习“C++免费学习笔记(深入)”;
- 添加联系人:使用
push_back()
插入新对象
- 遍历联系人:通过下标或迭代器访问
- 删除联系人:根据索引或姓名查找后用
erase()
移除
- 查找联系人:遍历匹配姓名或电话
核心功能实现示例
以下是几个关键功能的简要实现:
添加联系人
void addPerson(vector<Person>& contacts) { string name, phone, sex, address; int age; cout << "姓名: "; cin >> name; cout << "电话: "; cin >> phone; cout << "性别: "; cin >> sex; cout << "年龄: "; cin >> age; cout << "地址: "; cin >> address; contacts.push_back(Person(name, phone, sex, age, address)); cout << "添加成功!n"; }
显示所有联系人
void showAll(const vector<Person>& contacts) { if (contacts.empty()) { cout << "通讯录为空。n"; return; } for (const auto& p : contacts) { cout << "姓名:" << p.name << " 电话:" << p.phone << " 性别:" << p.sex << " 年龄:" << p.age << " 地址:" << p.address << "n"; } }
按姓名查找
void findPerson(const vector<Person>& contacts) { string name; cout << "输入要查找的姓名: "; cin >> name; for (const auto& p : contacts) { if (p.name == name) { cout << "找到: " << p.name << " " << p.phone << "n"; return; } } cout << "未找到该联系人。n"; }
删除联系人
void deletePerson(vector<Person>& contacts) { string name; cout << "输入要删除的姓名: "; cin >> name; for (auto it = contacts.begin(); it != contacts.end(); ++it) { if (it->name == name) { contacts.erase(it); cout << "删除成功!n"; return; } } cout << "未找到该联系人。n"; }
基本上就这些。通过
vector
管理联系人,代码简洁,易于扩展。你可以在此基础上加入文件读写(保存到txt或bin)、排序、修改功能,使程序更完整。C++标准库的
vector
自动处理内存,避免手动管理指针,适合初学者和中小型项目。
评论(已关闭)
评论已关闭