# 编写`Basket`类

news/2024/4/16 2:59:17

编写Basket

    class Basket{public://Basket使用合成的默认构造函数和拷贝控制成员void add_item(const std::shared_ptr<Quote> &sale){items.insert(sale);}//打印每本书的总价和购物篮中所有书的总价double total_receipt(std::ostream&) const;private://该函数用于比较shared_ptr,multiset成员会用到它static bool compare(const std::shared_ptr<Quote> &lhs,const std::shared_ptr<Quote> &rhs){return lhs->isbn() < rhs->isbn();}//multiset保存多个报价,按照compare成员排序std::multiset<std::shared_ptr<Quote>,decltype(compare)*>item{compare};};double Basket::total_receipt(ostream &os) const{double sum = 0.0;   //保存实时计算出的总价格//iter指向ISBN相同的一批元素中的第一个//upper_bound返回一个迭代器,该迭代器指向这批元素的尾后位置for(auto iter = items.cgegin();iter != items.cend();iter = items.upper_bound(*iter)){//我们知道在当前的Basket中至少有一个该关键字的元素///打印概述及对应的项目sum += print_total(os,**iter,items.count(*iter));}os<<"Total Sale: "<<sum<<endl;//打印最终的总价格return sum;}

模拟虚拟拷贝

class Quote{public://该虚函数返回当前对象的一份动态分配的拷贝//这些成员使用的引用限定符virtual Quote* clone() const & {return new Quote(*this);}virtual Quote* clone() &&{return new Quote(std::move(*this));}
};class Bulk_quote : public Quote{Bulk_quote* clone() const & {return new Bulk_quote(*this);}Bulk_quote* clone() && {return new Bulk_quote(std::move(*this));}
};class Basket{public:void add_item(const Quote& sale) //拷贝给定的对象{items.insert(std::shared_ptr<Quote>(sale.clone()));}void add_item(Quote&& sale) //移动给定的对象{items.insert(std::shared_ptr<Quote>(std::move(sale).clone()));}
};

http://www.ppmy.cn/news/981138.html

相关文章

“深入解析Spring Boot:从入门到精通的完整指南“

标题&#xff1a;深入解析Spring Boot&#xff1a;从入门到精通的完整指南 摘要&#xff1a;本文将深入解析Spring Boot框架&#xff0c;从入门到精通&#xff0c;为读者提供全面的指南。我们将介绍Spring Boot的基本概念、核心特性以及使用方法&#xff0c;并通过示例代码演示…

Docker:Docker-Compose

Docker:Docker-Compose 一、Docker-Compose 介绍1.1 Docker-Compose 概述二、Docker-Compose 安装2.1 Docker Compose 环境安装2.2 下载2.3 安装三、Docker-Compose 使用3.1 YAML 文件格式及编写注意事项3.2 使用 YAML 时需要注意下面事项3.3 Docker-Compose配置常用字段3.4 D…

NOI Linux 2.0 CSP奥赛复赛环境安装使用指南

新人旧人区别 以下是可能导致你在老版 NOI Linux 系统下形成的习惯在新版下翻车的改动。 移除了 GUIDE从 32bit 变为了 64bit 系统&#xff0c;需要注意指针现在占 8 字节而不是 4 字节更新了编译器版本默认情况下右键没了【新建文件】的选项桌面目录改为中文&#xff0c;可能…

因材施教,有道发布“子曰”教育大模型,落地虚拟人口语教练等六大应用

因材施教的教育宗旨下&#xff0c;大模型浪潮中&#xff0c;网易有道凭借其对教育场景的深入理解和对商业化的理性思考&#xff0c;为行业树立了垂直大模型的典范。 7月26日&#xff0c;教育科技公司网易有道举办了“powered by 子曰”教育大模型应用成果发布会。会上重磅推出了…

vue项目开发环境和生产环境代理的配置问题

1.跨域 跨域解决方案&#xff1a; 1.JSONP 通过动态 script标签跨域 2.document.domain iframe跨域 3.location.hash iframe 4.window.name iframe跨域 5.postMessage 跨 window 通信 6.跨域资源共享&#xff08;CORS&#xff09; 7.nginx代理跨域 8.nodejs中间件代理跨域 9…

使用 OpenCV 和 GrabCut 算法进行交互式背景去除

一、说明 我想&#xff0c;任何人都可以尝试从图像中删除背景。当然&#xff0c;有大量可用的软件或工具能够做到这一点&#xff0c;但其中一些可能很昂贵。但是&#xff0c;我知道有人使用窗口绘画3D魔术选择或PowerPoint背景去除来删除背景。 如果您是计算机视觉领域的初学者…

Linux 内核 ASoC 基本数据结构

Linux 内核 ASoC 框架建立了新的抽象&#xff0c;并通过一些中间层&#xff0c;将这些抽象接入 ALSA 音频框架。 Linux 内核 ASoC 设备驱动的结构如下图&#xff1a; Linux 内核 ASoC 设备驱动程序在 Linux 内核中扮演多个角色。 Linux 内核 ASoC 设备驱动程序在初始化阶段向…

服务器推送、在线游戏和电子邮件背后的网络协议

之前也聊了不少网络协议这块内容&#xff0c;现在我们将深入探讨关键的网络协议及其在不同应用中的作用。重点在于理解这些协议如何塑造我们在互联网上的通信和互动方式。我们将深入研究以下领域&#xff1a; WebSocket 在之前的讨论中&#xff0c;我们研究了HTTP及其在客户端和…

信息安全概论

信息安全概论 信息安全概论Chapter-1: 信息安全概论Chapter-2: 信息安全保障体系Chapter-3: 密码技术概述Chapter-4: 对称密码技术Chapter-5: 公钥密码技术Chapter-6: 密钥管理Chapter-7: 安全协议Chapter-8: 无线局域网安全Chapter-9: 网络安全技术Chapter-10: 信息隐藏与数字…

【电源芯片】电量计(Gauge)介绍

对于电池供电的产品,比如手机、笔记本电脑、电动车等,我们都希望知道其电池还剩多少电、还能用多久,以便我们能放心使用,避免使用过程中电量用光而宕机。并且客户已经受到智能手机影响,需要其他更低端的设备也能有1%的电量显示,不再像以前的小灵通或是诺基亚手机那样只会…

在CSDN学Golang云原生(gitlab)

一&#xff0c;基于Docker安装gitlab runner 在Golang中&#xff0c;基于Docker安装GitLab Runner需要以下步骤&#xff1a; 首先&#xff0c;您需要安装Docker和Docker Compose。这可以通过访问官方网站来完成。接下来&#xff0c;您需要创建一个名为docker-compose.yml的文…

Windows OS CMD 常用工具 の 命令合集

# First Of All 每次想要修改环境变量都要按部就班点开系统属性、高级系统设置、环境变量。这种操作实在是太繁琐了&#xff0c;对于我一个懒人来讲实在是 忍无可忍 。如果可以使用 WINR 或 CMD 直接打开系统内的一些工具&#xff0c;是不是就可以节省很多时间&#xff1b;是不…

vue 前端 邮箱、密码、手机号码等输入验证规则

最近在写前端表单验证的时候&#xff0c;发现一篇文章质量很好&#xff0c;所以写下这篇文章记录 原文章链接&#xff1a;vue 邮箱、密码、手机号码等输入验证规则 1.手机号 const checkPhone (rule, value, callback) > {const phoneReg /^1[34578]\d{9}$$/;if (!value…

Linux环境搭建(XShell+云服务器)

好久不见啊&#xff0c;放假也有一周左右了&#xff0c;简单休息了下&#xff08;就是玩了几天~~&#xff09;&#xff0c;最近也是在学习Linux&#xff0c;现在正在初步的学习阶段&#xff0c;本篇将会简单的介绍一下Linux操作系统和介绍Linux环境的安装与配置&#xff0c;来帮…

ros 里程计节点以及相关知识

一般地盘文件bringup中&#xff1a;riki_base_node这个节点&#xff0c;这个节点是算电机里程计&#xff1b; obot_pose_ekf是ROS Navigation stack中的一个包&#xff0c;通过扩展卡尔曼滤波器对imu、里程计odom、视觉里程计vo的数据进行融合&#xff0c;来估计平面移动机器人…

Spring 事务和事务的传播机制

文章目录 1. 回顾复习事务定义为什么要用事务MySQL 中事务的使用 2. Spring 中事务的实现2.1 编程式事务2.2 声明式事务 (自动)2.2.1 Transactional 作用范围2.2.2 Transactional 参数说明 3. SpringBoot 事务失效的场景3.1 非 public 方法3.2 timeout 超时3.3 代码中有 try/ca…

jmeter+nmon+crontab简单的执行接口定时压测

一、概述 临时接到任务要对系统的接口进行压测&#xff0c;上面的要求就是&#xff1a;压测&#xff0c;并发2000 在不熟悉系统的情况下&#xff0c;按目前的需求&#xff0c;需要做的步骤&#xff1a; 需要有接口脚本需要能监控系统性能需要能定时执行脚本 二、观察 >针…

Llama 2 来袭 - 在 Hugging Face 上玩转它

&#x1f917; 宝子们可以戳 阅读原文 查看文中所有的外部链接哟&#xff01; 引言 今天&#xff0c;Meta 发布了 Llama 2&#xff0c;其包含了一系列最先进的开放大语言模型&#xff0c;我们很高兴能够将其全面集成入 Hugging Face&#xff0c;并全力支持其发布。Llama 2 的社…

[C++] C++入门第二篇 -- 引用 -- 内联函数inline -- auto+for

目录 1、引用 -- & 1.1 引用的概念 1.2 引用特性 1.3 常引用 -- 权限问题 1.4 引用的使用场景 1.4.1 做参数 1.4.2 做返回值 注意 1.5 传值、传引用的效率比较 1.6 引用和指针的区别 2、内联函数 2.1 概念 转存失败重新上传取消​编辑转存失败重新上传取消​编…

面试题-TS(二):如何定义 TypeScript 中的变量和函数类型?

面试题-TS(二)&#xff1a;如何定义 TypeScript 中的变量和函数类型&#xff1f; 一、 变量类型的定义 在TypeScript中&#xff0c;我们可以使用冒号(:)来指定变量的类型。以下是一些常见的变量类型&#xff1a; 布尔类型&#xff08;boolean&#xff09;&#xff1a;表示tr…
最新文章