编写程序购物车实现:哈希表可以用C++ STL库中的unordered_map来实现,键值对可以使用食品编号和数量来表示
时间: 2024-03-14 11:42:43 浏览: 18
好的,下面是一个简单的 C++ 程序,实现购物车功能,使用 STL 库中的 unordered_map 实现哈希表,键值对使用食品编号和数量来表示。
```c++
#include <iostream>
#include <unordered_map>
using namespace std;
int main()
{
unordered_map<int, int> cart; // 声明一个哈希表,键是食品编号,值是数量
int food_num, count; // 食品编号和数量
char op; // 操作符:添加(a)、删除(d)、查询(q)和退出(e)
while (true) {
cout << "请输入操作符(a: 添加,d: 删除,q: 查询,e: 退出):";
cin >> op;
if (op == 'a') { // 添加商品到购物车
cout << "请输入要添加的食品编号和数量:";
cin >> food_num >> count;
cart[food_num] += count; // 若键不存在,则默认值为0,再加上数量
cout << "添加成功!" << endl;
} else if (op == 'd') { // 从购物车删除商品
cout << "请输入要删除的食品编号和数量:";
cin >> food_num >> count;
if (cart.find(food_num) != cart.end()) { // 判断键是否存在
cart[food_num] -= count; // 若数量不足,则减去全部数量
if (cart[food_num] <= 0) {
cart.erase(food_num); // 若数量为0,则删除该键值对
}
cout << "删除成功!" << endl;
} else {
cout << "购物车中不存在该商品!" << endl;
}
} else if (op == 'q') { // 查询购物车中所有商品
if (cart.empty()) {
cout << "购物车为空!" << endl;
} else {
cout << "购物车中的商品有:" << endl;
for (auto it = cart.begin(); it != cart.end(); ++it) {
cout << "食品编号:" << it->first << ",数量:" << it->second << endl;
}
}
} else if (op == 'e') { // 退出程序
break;
} else { // 非法操作符
cout << "非法操作符!" << endl;
}
}
return 0;
}
```
这个程序实现了以下功能:
- 添加商品到购物车
- 从购物车删除商品
- 查询购物车中所有商品
- 退出程序
在程序中,我们使用了 unordered_map 来实现哈希表,其中键是食品编号,值是数量。在添加商品时,如果键不存在,则默认值为0,再加上数量;在删除商品时,需要先判断键是否存在,若存在再减去数量或删除键值对。在查询购物车时,我们使用了一个迭代器,遍历整个哈希表,并输出每个键值对的键和值。
希望这个程序能够帮助你实现购物车功能!