设计模式第一天|单例模式 1.小明的购物车

【设计模式专题之单例模式】1.小明的购物车

文章链接:卡码网设计模式
题目链接:1.小明的购物车

单例模式:

#include <iostream>
#include <unordered_map>
#include <vector>

using namespace std;

class ShoppingCartManager {
   
private:
    unordered_map<string, int> cart;
    vector<string> 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的使用。

设计模式第一天打卡,加油!!!

相关推荐

  1. 设计模式第一|模式 1.购物

    2024-02-02 10:36:03       63 阅读
  2. 设计模式1

    2024-02-02 10:36:03       42 阅读
  3. 设计模式1模式

    2024-02-02 10:36:03       36 阅读
  4. 设计模式第二讲:模式

    2024-02-02 10:36:03       47 阅读
  5. 设计模式

    2024-02-02 10:36:03       63 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-02-02 10:36:03       98 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-02-02 10:36:03       106 阅读
  3. 在Django里面运行非项目文件

    2024-02-02 10:36:03       87 阅读
  4. Python语言-面向对象

    2024-02-02 10:36:03       96 阅读

热门阅读

  1. 每日OJ题_算法_模拟①_力扣1576. 替换所有的问号

    2024-02-02 10:36:03       56 阅读
  2. python将“{‘a‘:1}“和‘{“a“:None}‘转化为dict

    2024-02-02 10:36:03       35 阅读
  3. 为什么要用Qt开发Android应用?

    2024-02-02 10:36:03       48 阅读
  4. vue中template原理

    2024-02-02 10:36:03       45 阅读
  5. vue常见面试题

    2024-02-02 10:36:03       36 阅读
  6. Go中使用反射的动态方法调用

    2024-02-02 10:36:03       52 阅读