目录
- 【设计模式专题之单例模式】1.小明的购物车
【设计模式专题之单例模式】1.小明的购物车
文章链接:卡码网设计模式
题目链接:1.小明的购物车
单例模式:
#include
#include #include using namespace std; class ShoppingCartManager { private: unordered_map cart; vector order; // 保持顺序 // 私有构造函数 ShoppingCartManager() {} public: // 获取购物车实例 static ShoppingCartManager& getInstance() { static ShoppingCartManager instance; return instance; } // 添加商品 void addToCart(const string& itemName, int quantity) { if (cart.find(itemName) == cart.end()) { order.emplace_back(itemName); } cart[itemName] += quantity; +=和=都行 } // 查看商品 void viewCart() const { for (const auto& itemName : order) { cout << itemName << " " << cart.at(itemName) << endl; } } }; int main() { string itemName; int quantity; ShoppingCartManager& cart = ShoppingCartManager::getInstance(); while (cin >> itemName >> quantity) { cart.addToCart(itemName, quantity); } cart.viewCart(); return 0; } 这题注意清单输出顺序,map底层是红黑树,unordered_map底层是哈希表,无法保证输出顺序和输入相同,这里创建了一个vector来保证输出顺序,并使用了emplace_back方法,在向量的末尾直接构造一个元素,而不是先创建一个元素对象再将其复制或移动到向量中(push_back)。
另外注意程序中&和const的使用。
设计模式第一天打卡,加油!!!
猜你喜欢
网友评论
- 搜索
- 最新文章
- 热门文章