智能指针和STL库学习思维导图和练习
思维导图:
#include <iostream>
#include <vector>
#include <string>
using namespace std;
// 用户结构体
struct User {
string username;
string password;
};
vector<User> users; // 存储所有注册用户
// 使用迭代器查找用户名是否存在
vector<User>::iterator findUser(const string& username) {
auto it = users.begin();
for (; it != users.end(); ++it) {
if (it->username == username) {
return it;
}
}
return users.end(); // 未找到返回结束迭代器
}
void registerUser() {
User newUser;
cout << "请输入用户名: ";
cin >> newUser.username;
// 使用迭代器查重
if (findUser(newUser.username) != users.end()) {
cout << "用户名已存在!" << endl;
return;
}
cout << "请输入密码: ";
cin >> newUser.password;
users.push_back(newUser); // 使用vector的push_back添加元素
cout << "注册成功!" << endl;
}
void loginUser() {
string username, password;
cout << "请输入用户名: ";
cin >> username;
cout << "请输入密码: ";
cin >> password;
// 使用迭代器遍历验证
auto it = users.begin();
for (; it != users.end(); ++it) {
if (it->username == username && it->password == password) {
cout << "登录成功!" << endl;
return;
}
}
cout << "用户名或密码错误!" << endl;
}
int main() {
int choice;
do {
cout << "\n1. 注册\n2. 登录\n3. 退出\n请选择操作: ";
cin >> choice;
switch (choice) {
case 1:
registerUser();
break;
case 2:
loginUser();
break;
case 3:
cout << "系统已退出。" << endl;
break;
default:
cout << "无效选项,请重新输入!" << endl;
}
} while (choice != 3);
return 0;
}