用list容器写一个如公交车乘客的存储 用set容器写一个手机游戏的个人得分记录的存储 用map容器写一个按ID号存储十万个用户,想要快速要通过ID查找对应的用户
时间: 2025-09-05 11:09:29 AIGC 浏览: 6
下面分别使用 `std::list`、`std::set` 和 `std::map` 容器实现三个不同的功能示例,并对每一行代码进行中文翻译和解释。
---
## ✅ 1. 使用 `std::list` 实现公交车乘客存储系统
```cpp
#include <iostream> // 输入输出流库
#include <list> // 使用 list 容器
#include <string> // 使用字符串类型
int main() {
// 创建一个 list 容器,用于存储乘客姓名
std::list<std::string> passengers;
// 添加乘客
passengers.push_back("张三");
passengers.push_back("李四");
passengers.push_back("王五");
// 打印当前乘客列表
std::cout << "当前公交车上的乘客:\n";
for (const std::string& name : passengers) {
std::cout << "- " << name << "\n";
}
// 模拟一位乘客下车(删除“李四”)
passengers.remove("李四");
// 再次打印乘客列表
std::cout << "\n一位乘客下车后,当前乘客:\n";
for (const std::string& name : passengers) {
std::cout << "- " << name << "\n";
}
return 0;
}
```
### 中文解释说明:
| 英文代码 | 中文解释 |
|----------|----------|
| `std::list<std::string> passengers;` | 创建一个字符串类型的双向链表容器,用于存储乘客姓名 |
| `passengers.push_back("张三");` | 将乘客姓名添加到链表末尾 |
| `passengers.remove("李四");` | 删除指定乘客 |
| `for (const std::string& name : passengers)` | 遍历链表中的所有乘客 |
| `std::list` | 支持频繁的插入和删除操作,适合模拟乘客上下车 |
---
## ✅ 2. 使用 `std::set` 实现手机游戏的个人得分记录存储
```cpp
#include <iostream> // 输入输出流库
#include <set> // 使用 set 容器
#include <string> // 使用字符串类型
int main() {
// 创建一个 set 容器,用于存储玩家得分(自动去重并排序)
std::set<int> scores;
// 插入几条得分记录(包含重复值,set会自动去重)
scores.insert(120);
scores.insert(80);
scores.insert(120); // 重复值,不会插入
scores.insert(200);
scores.insert(150);
// 显示所有得分记录(自动排序)
std::cout << "您的历史得分记录(已排序且无重复):\n";
for (int score : scores) {
std::cout << score << "\n";
}
// 检查是否存在某个分数
int target = 150;
if (scores.find(target) != scores.end()) {
std::cout << "您获得过 " << target << " 分。\n";
} else {
std::cout << "未找到 " << target << " 分的记录。\n";
}
return 0;
}
```
### 中文解释说明:
| 英文代码 | 中文解释 |
|----------|----------|
| `std::set<int> scores;` | 创建一个整型集合,自动排序并去重 |
| `scores.insert(120);` | 向集合中插入一个得分 |
| `scores.find(target)` | 查找是否存在某个分数 |
| `for (int score : scores)` | 遍历集合中的所有得分 |
| `std::set` | 适合需要快速查找、无重复、自动排序的场景,如得分记录 |
---
## ✅ 3. 使用 `std::map` 实现按ID号存储十万个用户并快速查找
```cpp
#include <iostream> // 输入输出流库
#include <map> // 使用 map 容器
#include <string> // 使用字符串类型
struct User {
std::string name;
std::string email;
};
int main() {
// 创建一个 map 容器,用于存储用户 ID 到用户信息的映射
std::map<int, User> users;
// 添加 100000 个用户(演示只添加几个)
users[1001] = {"张三", "[email protected]"};
users[1002] = {"李四", "[email protected]"};
users[1003] = {"王五", "[email protected]"};
// 快速通过 ID 查找用户
int targetID = 1002;
if (users.find(targetID) != users.end()) {
User u = users[targetID];
std::cout << "找到用户 ID " << targetID << ":\n"
<< "姓名: " << u.name << "\n"
<< "邮箱: " << u.email << "\n";
} else {
std::cout << "未找到用户 ID " << targetID << "\n";
}
return 0;
}
```
### 中文解释说明:
| 英文代码 | 中文解释 |
|----------|----------|
| `std::map<int, User> users;` | 创建一个 map 容器,将用户ID映射到用户信息 |
| `users[1001] = {"张三", "[email protected]"};` | 添加一个用户 |
| `users.find(targetID)` | 快速查找指定ID的用户 |
| `std::map` | 支持按键快速查找、插入和删除,适合 ID 查询场景 |
---
###
阅读全文