小游戏的背包 Bag 用 items 记每样东西有几个。写 use(item):没有这样东西就返回 false;有就少一个,返回 true;少到 0 个时,用 erase 把它从背包里拿掉。
bag_after({"potion", "potion", "key"}, {"potion"})→{'key': 1, 'potion': 1}bag_after({"key"}, {"key"})→{}map<string, int> bag_after(const vector<string> &picks, const vector<string> &uses)#include <map>
#include <string>
#include <vector>
using namespace std;
class Bag {
public:
map<string, int> items;
void pick(const string &item) {
items[item]++;
}
bool use(const string &item) {
// 在这里写:用掉一个 item
return false;
}
};
map<string, int> bag_after(const vector<string> &picks, const vector<string> &uses) {
Bag b;
for (const string &p : picks) {
b.pick(p);
}
for (const string &u : uses) {
b.use(u);
}
return b.items;
}
写好了先点「运行」试试示例,没问题再点「提交」。