C++——清明

 

#include <iostream>
#include <cstring>
#include <cstdlib>
#include <unistd.h>
#include <sstream>
#include <vector>
#include <memory>
#include <ctime>using namespace std;class Weapon; // 前置声明class Hero{
private:int hp;int atk;int def;int spd;string job;  // 新增职业属性public:Hero(int h=0, int a=0, int d=0, int s=0, string j="Warrior"): hp(h), atk(a), def(d), spd(s), job(j){}void setAtk(int a) { atk = a; }void setDef(int d) { def = d; }void setSpd(int s) { spd = s; }void setHp(int h) { hp = h; }void setJob(string j) { job = j; }int getAtk() { return atk; }int getDef() { return def; }int getSpd() { return spd; }int getHp() { return hp; }string getJob() { return job; }void equipWeapon(Weapon* w);
};class Weapon{
private:int atk;public:Weapon(int atk = 1) : atk(atk) {}void setAtk(int a) { atk = a; }int getAtk() { return atk; }// 根据武器类型的不同,英雄获得不同的属性virtual void getAttr(Hero& hero) {int new_atk = hero.getAtk() + atk;hero.setAtk(new_atk);}virtual void purl_virtual_func() = 0;virtual string getType() = 0;  // 新增获取武器类型
};class Sword : public Weapon {
private:int hp;public:Sword(int atk = 1, int hp = 1): Weapon(atk), hp(hp) {}void setHp(int h) { hp = h; }int getHp() { return hp; }virtual void getAttr(Hero& hero) {Weapon::getAttr(hero);int new_hp = hero.getHp() + hp;hero.setHp(new_hp);}void purl_virtual_func() {}string getType() override {return "Sword";}
};class Blade : public Weapon {
private:int spd;public:Blade(int atk = 1, int spd = 1): Weapon(atk), spd(spd) {}void setSpd(int s) { spd = s; }int getSpd() { return spd; }virtual void getAttr(Hero& hero) {Weapon::getAttr(hero);int new_spd = hero.getSpd() + spd;hero.setSpd(new_spd);}void purl_virtual_func() {}string getType() override {return "Blade";}
};class Monster {
private:int hp;int atk;public:Monster(int h = 50, int a = 10) : hp(h), atk(a) {}int getHp() { return hp; }int getAtk() { return atk; }// 怪物死亡时掉落武器Weapon* die(Hero& hero) {srand(time(0));  // 初始化随机种子string job = hero.getJob();// 根据英雄的职业掉落不同的武器if (job == "Warrior") {return new Sword(10, 20);  // 战士掉落剑,增加攻击力和生命值} else if (job == "Rogue") {return new Blade(8, 15);  // 盗贼掉落短剑,增加攻击力和速度} else {// 默认掉落短剑return new Blade(5, 10);  // 其他职业掉落短剑}}
};void Hero::equipWeapon(Weapon* w) {w->getAttr(*this);
}int main(int argc, const char** argv) {Hero hero(100, 15, 10, 5, "Warrior");  // 创建一个战士Monster monster(50, 10);  // 创建一个怪物cout << "Hero HP: " << hero.getHp() << " Attack: " << hero.getAtk() << endl;// 英雄击败怪物,掉落武器Weapon* droppedWeapon = monster.die(hero);// 英雄装备掉落的武器hero.equipWeapon(droppedWeapon);cout << "After defeating the monster and equipping dropped weapon:" << endl;cout << "Hero HP: " << hero.getHp() << " Attack: " << hero.getAtk() << endl;delete droppedWeapon;  // 清理掉落的武器return 0;
}

#include <iostream>
using namespace std;template <typename T>
class list {
public:struct Node {T val;Node* next;Node* prev;Node(const T& value) : val(value), next(nullptr), prev(nullptr) {}};list() : head(nullptr), tail(nullptr) {}~list() {clear();}void push_back(const T& value) {Node* newNode = new Node(value);if (!tail) {head = tail = newNode;  // 如果链表为空,新节点既是头节点又是尾节点} else {tail->next = newNode;   // 将当前尾节点的 next 指向新节点newNode->prev = tail;   // 新节点的 prev 指向当前尾节点tail = newNode;         // 更新尾节点为新节点}}friend ostream& operator<<(ostream& os, const list<T>& lst) {Node* current = lst.head;while (current) {os << current->val << " ";current = current->next;}return os;}T& operator[](size_t index) {Node* current = head;size_t count = 0;while (current && count < index) {current = current->next;count++;}if (!current) {throw out_of_range("Index out of range");}return current->val;}void clear() {Node* current = head;while (current) {Node* nextNode = current->next;delete current;  // 删除当前节点current = nextNode;}head = tail = nullptr;  // 清空头尾指针}
private:Node* head;  // 记录链表头节点Node* tail;  // 记录链表尾节点
};
int main() {list<int> myList;myList.push_back(10);myList.push_back(20);myList.push_back(30);cout << "List: " << myList << endl;try {cout << "Element at index 1: " << myList[1] << endl;cout << "Element at index 5: " << myList[5] << endl;  // 会抛出异常} catch (const out_of_range& e) {cout << e.what() << endl;}return 0;
}

C语言

 C++

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/75010.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

es --- 集群数据迁移

目录 1、需求2、工具elasticdump2.1 mac安装问题解决 2.2 elasticdump文档 3、迁移 1、需求 迁移部分新集群没有的索引和数据 2、工具elasticdump Elasticdump 的工作原理是将输入发送到输出 。两者都可以是 elasticsearch URL 或 File 2.1 mac安装 前置&#xff1a;已经安装…

鸿蒙开发_ARKTS快速入门_语法说明_组件声明_组件手册查看---纯血鸿蒙HarmonyOS5.0工作笔记010

然后我们来看如何使用组件 可以看到组件的组成 可以看到我们使用的组件 然后看一下组件的语法.组件中可以使用子组件. 然后组件中可以有参数,来修改组件的样式等 可以看到{},这种方式可以设置组件参数,当然在下面. 的方式也可以的 然后再来

【GEE学习笔记】报错解决:Sentinel-2 数据集分为 L1C(大气顶层)和 L2A(地表反射率),如何选择波段进行去云处理?

【GEE学习笔记】报错解决&#xff1a;Sentinel-2 数据集分为 L1C&#xff08;大气顶层&#xff09;和 L2A&#xff08;地表反射率&#xff09;&#xff0c;如何选择波段进行去云处理&#xff1f; 【GEE学习笔记】报错解决&#xff1a;Sentinel-2 数据集分为 L1C&#xff08;大…

OpenVLA-OFT——微调VLA时加快推理的三大关键设计:支持动作分块的并行解码、连续动作表示以及L1回归(含输入灵活化及对指令遵循的加强)

前言 25年3.26日&#xff0c;这是一个值得纪念的日子&#xff0c;这一天&#xff0c;我司「七月在线」的定位正式升级为了&#xff1a;具身智能的场景落地与定制开发商 &#xff0c;后续则从定制开发 逐步过渡到 标准产品化 比如25年q2起&#xff0c;在定制开发之外&#xff0…

IDEA 使用Maven打包时内存溢出

IDEA 使用Maven打包时内存溢出 解决办法&#xff1a; File -> settings -> Build,Excetion,Deployment-> Compiler 中添加配置“-Djps.track.ap.dependenciesfalse” 如图&#xff1a;

随机产生4位随机码(java)

Random类&#xff1a; 用于生成随机数 import java.util.Random; 导入必要的类 generateVerificationCode()方法&#xff1a; 这是一个静态方法&#xff0c;可以直接通过类名调用 返回一个6位数字的字符串&#xff0c;首位不为0 生成首位数字&#xff1a; random.nextInt…

C#调用C++动态库时出现`System.DllNotFoundException`错误的解决思路

文章目录 1. DLL文件路径问题2. 依赖的运行时库缺失3. 平台不匹配&#xff08;x86/x64&#xff09;4. 导出函数名称不匹配5. DLL文件损坏或权限问题6. 运行时库冲突&#xff08;MT/MD不匹配&#xff09;7. 使用DLLImport时的常见错误总结步骤 在C#中调用C动态库时出现System.Dl…

免费Deepseek-v3接口实现Browser-Use Web UI:浏览器自动化本地模拟抓取数据实录

源码 https://github.com/browser-use/web-ui 我们按照官方教程&#xff0c;修订几个环节&#xff0c;更快地部署 步骤 1&#xff1a;克隆存储库 git clone https://github.com/browser-use/web-ui.git cd web-ui Step 2: Set Up Python Environment 第 2 步&#xff1a;设置…

ES 参数调优

1、refresh_interval 控制索引刷新的时间间隔。增大这个值可以减少I/O操作&#xff0c;从而提升写入性能&#xff0c;但会延迟新文档的可见性 查看 GET /content_erp_nlp_help_202503191453/_settings?include_defaultstrue 动态修改&#xff1a;refresh_interval 是一个动态…

【Easylive】视频删除方法详解:重点分析异步线程池使用

【Easylive】项目常见问题解答&#xff08;自用&持续更新中…&#xff09; 汇总版 方法整体功能 这个deleteVideo方法是一个综合性的视频删除操作&#xff0c;主要完成以下功能&#xff1a; 权限验证&#xff1a;检查视频是否存在及用户是否有权限删除核心数据删除&…

《比特信使的七重试炼:从数据丢失到CA认证的守护史诗》

点击下面图片带您领略全新的嵌入式学习路线 &#x1f525;爆款热榜 88万阅读 1.6万收藏 第一章&#xff1a;初现危机——数据丢失的阴云 比特城的清晨总是被数据流的光芒点亮&#xff0c;但这一天&#xff0c;工程师艾琳的实验室却笼罩在阴霾中。她刚刚尝试通过古老的“疾风…

如何更好的理解 beforeEach 全局前置守卫,在处理路由跳转前触发,怎么实现常用的全局权限校验、登录状态检查的呢?

以下将深入讲解 Vue Router 的全局前置守卫 beforeEach 在权限系统中的实现原理和实战应用&#xff0c;结合企业级项目代码进行拆解&#xff08;基于 Vue 3 TypeScript Pinia&#xff09;。 一、前置守卫核心机制 1.1 执行时机与特性 全局前置守卫在路由跳转前触发&#xf…

VMware上的windows虚拟机安装使用Docker方法

因为在实体机上使用Docker会导致VMware无法启动虚拟机&#xff0c;所以尝试了在虚拟机中安装Docker. 1. 创建Windows虚拟机. windows至少是Win10 1.9***或者Win 11. 这是Docker Desktop要求的。 2. 虚拟机CPU要开启虚拟化功能。 虚拟机的CPU开启虚拟化 虚拟机的memory要不小…

项目中集成ECharts图表(通过定时任务SpringTask统计每天的订单金额)

项目应用Echarts ①、前端终端安装Echarts npm install echarts --save ②、src/views创建order目录&#xff0c;在order目录下创建orderStatistics.vue ③、src/router/modules目录下创建order.js&#xff0c;配置路由 const layout ()>import(/layout/index.vue) …

2022第十三届蓝桥杯大赛软件赛省赛C/C++ 大学 B 组(题解解析)

记录刷题的过程、感悟、题解。 希望能帮到&#xff0c;那些与我一同前行的&#xff0c;来自远方的朋友&#x1f609; 大纲&#xff1a; 1、九进制转十进制-&#xff08;解析&#xff09;-简单的进制转化问题&#x1f604; 2、顺子日期-&#xff08;解析&#xff09;-考察日期 3…

python应用之使用pdfplumber 解析pdf文件内容

目录标题 一. 通过 pdfplumber.open() 解析复杂PDF&#xff1a;1-2. 报错&#xff1a;V2 &#xff1a; 1-3. v3 使用tk 库&#xff0c;弹框选择文件运行环境准备完整代码保存运行测试步骤方式二&#xff1a;命令行方式&#xff08;适用于自动化&#xff09; 测试用例示例常见问…

力扣热题100刷题day61|234.回文链表(两种方法)

一、回文链表 234.回文链表 两种解法 解法1&#xff1a;时间复杂度O(n) 空间复杂度O(n) 遍历链表&#xff0c;计算链表长度&#xff0c;创建同样长度大小的数组&#xff0c;用数组存储链表中所有元素&#xff0c;之后双指针遍历链表&#xff0c;一个从头开始&#xff0c;一…

vue3+element-plus动态与静态表格数据渲染

一、表格组件&#xff1a; <template> <el-table ref"myTable" :data"tableData" :header-cell-style"headerCellStyle" header-row-class-name"my-table-header" cell-class-name"my-td-cell" :row-style"r…

Kafka 中的生产者分区策略

Kafka 中的 生产者分区策略 是决定消息如何分配到不同分区的机制。这个策略对 Kafka 的性能、负载均衡、消息顺序性等有重要影响。了解它对于高效地使用 Kafka 进行消息生产和消费至关重要。 让我们一起来看 Kafka 中 生产者的分区策略&#xff0c;它如何工作&#xff0c;以及…

《从零搭建Vue3项目实战》(AI辅助搭建Vue3+ElemntPlus后台管理项目)零基础入门系列第二篇:项目创建和初始化

&#x1f91f;致敬读者 &#x1f7e9;感谢阅读&#x1f7e6;笑口常开&#x1f7ea;生日快乐⬛早点睡觉 &#x1f4d8;博主相关 &#x1f7e7;博主信息&#x1f7e8;博客首页&#x1f7eb;专栏推荐&#x1f7e5;活动信息 文章目录 《从零搭建Vue3项目实战》&#xff08;AI辅助…