上海古都建筑设计集团,上海办公室装修设计公司,上海装修公司高质量的内容分享社区,上海装修公司我们不是内容生产者,我们只是上海办公室装修设计公司内容的搬运工平台

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

guduadmin201月前

目录

  • 【设计模式专题之单例模式】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的使用。

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

网友评论

搜索
最新文章
热门文章
热门标签
 
 周公解梦原版2345生活  经常梦见前男友周公解梦  女人梦见蛇爬自己身上