自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(149)
  • 收藏
  • 关注

原创 Arkts加载网页url的pdf发票黑屏问题

摘要:该代码实现了一个发票PDF查看页面,通过路由参数获取发票URL并展示PDF文件。页面包含标题栏和滚动区域,使用PDFView组件展示PDF内容。当URL无效时显示提示信息。代码处理了参数解析、URL解码和错误情况,并支持返回操作。在模拟器上运行时可能出现闪退问题,但在真机预览正常。关键功能包括参数获取、URL解码和PDF展示。

2025-08-18 11:08:16 317

原创 如何系统性了解程序

2. 微观切入 | 1. 入口:找到 Controller/Main 函数2. 调试:用 Debugger 单步跟踪3. 数据:分析数据库表结构4. 测试:阅读单元/集成测试 | 理解业务的“如何实现”将业务逻辑与代码实现精确对应 || 1. 宏观理解 | 1. 沟通:与 PM、资深开发交流2. 文档:阅读 PRD、API 文档3. 使用:亲自操作产品 | 理解业务的“为什么”和“是什么”建立高层视野,不纠结代码 |产品经理 (PM) / 业务分析师 (BA): 他们是业务逻辑的“源头”。

2025-07-31 23:39:31 409

原创 C++_HELLO算法_哈希表的简单实现

本文介绍了哈希表的简单实现方法。通过数组存储键值对(桶),使用哈希函数(key%capacity)定位桶位置,实现查询、插入、删除等基本操作。示例代码展示了基于数组的哈希表实现,包括处理哈希冲突的简单覆盖策略。同时指出哈希冲突的本质原因:输入空间远大于输出空间导致多个key可能映射到同一索引位置,如学号12836和20336都会定位到索引36的情况。最后强调需要解决哈希冲突问题来保证数据的正确存储和查询。

2025-07-31 23:29:30 326

原创 TypeScript代码语法快速入门

TypeScript核心知识点摘要(150字): 本文总结了TypeScript的核心语法特性。基础类型部分包含类型断言、元组和枚举的使用;函数部分详解了参数处理与重载机制;面向对象编程涵盖接口、类修饰符、存取器和抽象类;高级类型包括类型别名和泛型应用;接口扩展支持继承与多实现。其他重点包含可选链、构造函数简写等语法糖。整体突出了TypeScript强大的类型系统(基础/联合/断言类型)、完整的OOP支持(类/继承/抽象类)以及泛型编程优势,通过接口与类型别名实现灵活的类型定义。建议结合具体场景实践这些特性

2025-07-27 20:58:33 152

原创 C++_Hello算法_队列

本文介绍了队列这种遵循先入先出(FIFO)原则的线性数据结构。队列的基本操作包括入队(push)、出队(pop)和访问队首元素(peek),时间复杂度均为O(1)。文章详细讲解了基于链表和数组的两种队列实现方式:链表实现使用头尾指针处理入队出队;数组实现则通过环形数组和取余运算解决空间限制问题,并给出了完整的C++代码示例。最后列举了队列在订单处理、任务调度等需要"先来后到"场景中的典型应用。

2025-07-22 23:09:56 399

原创 C++中vector的iterator迭代器的理解

C++中std::vector的迭代器是类似指针的工具,用于遍历元素。begin()指向首元素,end()指向尾后位置(非末元素),可通过算术运算调整位置。迭代器支持解引用、自增等操作,但在vector扩容或删除元素时会失效。使用反向迭代器(rbegin()/rend())可逆向遍历。关键点包括:区分有效/无效位置、注意迭代器失效问题、掌握基本操作如访问元素和位置比较。正确理解迭代器位置是高效使用vector的基础,尤其在动态修改容器时需要谨慎处理。

2025-07-20 17:19:22 604

原创 C++中 _vector的容量capacity和 大小size对比

摘要:C++中std::vector的size表示当前元素数量,capacity表示预分配的内存容量。当size超过capacity时会触发自动扩容(通常倍增)。通过reserve()可以预分配内存减少扩容开销,shrink_to_fit()可请求释放多余内存。理解二者的区别有助于优化内存使用,典型场景是预先reserve()已知大小的空间来避免频繁扩容。size()<=capacity()始终成立,合理管理二者关系能提升vector性能。

2025-07-20 11:20:49 383

原创 C++提升编程_STL常见容器_string

本文介绍了C++ STL中string容器的基本概念和常用操作。string是C++风格的字符串类,内部封装了char*并管理内存分配。主要内容包括:1) string的构造函数和赋值操作;2) 字符串拼接方法;3) 查找替换功能;4) 字符串比较;5) 字符存取;6) 插入删除;7) 获取子串。通过多个测试函数展示了string的各种成员方法,如find()、replace()、substr()等的使用,帮助开发者高效处理字符串操作。

2025-07-19 17:26:06 106

原创 C++_提升编程_Vector存放自定义数据类型

本文演示了C++中使用vector存储自定义Person类对象的两种方法。第一种方法(test01)直接存储对象,通过迭代器或for_each+lambda表达式遍历输出对象属性;第二种方法(test02)存储对象指针,使用指针操作和lambda表达式访问对象数据。两种方式都实现了对Person对象(姓名、年龄)的存储和遍历输出,展示了STL容器与自定义类型的结合使用。

2025-07-19 17:24:26 103

原创 C++提升编程_Vector容器嵌套容器

本文演示了C++中二维容器的嵌套使用。通过vector<vector<int>>创建了一个4x4的二维数组,填充了1-7的数字序列。文章展示了两种遍历方式:传统迭代器和C++11的auto自动类型推导结合范围for循环。后者使代码更简洁明了。程序最终输出这个二维数组的所有元素,每行数据单独显示,体现了容器嵌套和现代C++遍历技术的应用。

2025-07-19 17:23:31 102

原创 C++_编程提升_STL容器

【代码】C++_编程提升_STL容器。

2025-07-19 17:22:09 341

原创 C++_编程提升_temaplate模板_案例

摘要:本文实现了一个通用的数组类模板MyArray,支持内置和自定义数据类型存储。主要功能包括:堆区数据存储、容量参数化构造、深拷贝功能(拷贝构造和operator=重载)、尾插尾删操作、下标访问以及获取元素数量和容量。测试案例展示了内置int类型和自定义Person类的使用,验证了数组操作的正确性。该模板类解决了浅拷贝问题,提供了基本数组操作接口,适用于多种数据类型存储需求。

2025-07-14 22:39:34 254

原创 C++_template类模板与函数模板的区别

特性类模板函数模板实例化方式显式指定类型(C++17前)支持隐式类型推导默认模板参数支持C++11起支持特化支持全特化、偏特化仅支持全特化成员函数定义需模板前缀无需额外前缀静态成员每个实例化独立无静态成员(函数内static独立)典型应用数据结构(容器、智能指针)通用算法(比较、交换)通过理解这些区别,开发者能更高效地选择合适工具,构建灵活且类型安全的泛型代码。

2025-07-14 09:03:50 722

原创 C++_提升编程_1.3.8 类模板与友元

本文介绍了模板类配合友元函数的两种实现方式:类内实现和类外实现。类内实现直接在类中声明友元函数即可;类外实现则需要先声明函数模板,让编译器提前知晓,再通过空模板参数列表<>在类中声明为友元。两种方式都能让全局函数访问模板类的私有成员,区别在于实现位置和编译顺序的处理。代码示例分别展示了Person模板类的两种友元实现方式,并演示了如何调用这些友元函数来输出对象信息。

2025-07-13 17:28:45 168

原创 C++_提升编程_1.3.7 类模板分文件编写

类模板成员函数分文件编写时,由于函数创建时机在调用阶段会导致链接问题。解决方法有两种:1)直接包含源文件;2)将声明和实现合并为.hpp文件(如person.hpp)。示例中展示了第二种方法,将模板类定义和成员函数实现都放在.hpp文件中,确保在使用时能正确实例化。这种方法避免了链接错误,是类模板分文件编写的推荐方式。

2025-07-13 16:22:50 181

原创 C++_提高编程_ 类模板成员函数类外实现

摘要:本文介绍了类模板成员函数的类外实现方法。通过Person类模板示例,展示了如何在类外实现构造函数和成员函数,包括模板参数的声明和定义格式。代码演示了模板类对象(Person<string,int>)的创建和使用,输出姓名和年龄信息。该示例有助于理解类模板成员函数的分离式实现方式。

2025-07-13 15:40:48 321

原创 链表和数组和列表的区别

C++中数组、链表和列表的主要区别:数组(std::array)是固定大小的连续内存结构,支持快速随机访问但扩容困难;链表(LinkedList)使用指针连接的非连续内存结构,插入删除高效但访问较慢;列表分为std::vector(动态数组,随机访问快)和std::list(双向链表,任意位置操作高效)。选择依据:频繁访问用vector,频繁插入删除用list,固定需求用array。表格对比了它们的内存布局、访问方式和操作效率等核心特性。

2025-07-09 21:41:23 309

原创 Hello_算法_快速排序(分治策略)

快速排序是一种高效的分治排序算法,通过"哨兵划分"将数组分为小于和大于基准数的两部分。其核心步骤包括:选取基准数,使用双指针从两端扫描交换元素,直至指针相遇完成划分。算法整体流程是对原数组进行划分后,递归处理左右子数组,直到子数组长度为1时终止。示例代码展示了哨兵划分的实现和快速排序的递归调用过程,其中基准数选取最左元素,通过交换操作完成排序。该算法平均时间复杂度为O(nlogn),是常用的高效排序方法之一。

2025-07-09 15:52:40 219

原创 Hello_算法_列表

摘要:本文介绍了列表(list)这一抽象数据结构的概念和实现方式。列表作为有序集合支持增删查改等操作,可通过链表或数组实现,其中动态数组解决了普通数组长度固定的问题。文中以C++为例,展示了如何实现一个简易列表类(MyList),包括初始容量设置、扩容机制等关键设计,并对比了标准库中的vector容器。代码示例涵盖了列表的基本操作如添加、插入、删除元素等,以及动态扩容的实现原理。该实现有助于理解列表底层工作机制。

2025-07-08 23:01:43 194

原创 Hello_算法_链表

链表是一种通过节点对象和引用/指针连接的线性数据结构,其节点可以分散存储在内存各处,无需连续空间。每个节点包含值和指向下一节点的引用,具有头节点和尾节点。相比数组,链表在插入/删除操作上更高效,但访问元素需要线性遍历。常见链表类型包括单向链表、双向链表(含前驱和后继指针)和环形链表(首尾相连)。链表广泛应用于栈、队列、哈希表、图等数据结构,以及操作系统调度、浏览器历史管理等场景。代码示例展示了链表的初始化、节点插入/删除、访问和查找等基本操作。

2025-07-06 10:58:18 738

原创 Hello_算法_数组的常用操作

本文介绍了数组的基本概念和常用操作。数组是一种线性数据结构,元素存储在连续内存中,通过索引访问。主要操作包括初始化、随机访问、插入删除元素、遍历查找、扩容数组等。由于数组长度固定,插入删除操作效率较低。数组优势在于随机访问快,常用于排序搜索、查找表、机器学习等领域,也是实现其他数据结构的基础。文章还展示了各类操作的代码实现,并指出数组在内存中的存储特性使其具有特定的性能特点和应用场景。

2025-07-05 10:23:06 709

原创 C++_提高编程 模板Template

本文介绍了C++泛型编程中的函数模板技术。函数模板通过建立通用函数,将数据类型参数化,提高代码复用性。主要内容包括:1) 函数模板的基本语法和使用方法(自动类型推导和显式指定类型);2) 使用注意事项:类型推导必须一致,模板必须确定数据类型才能使用;3) 通过交换函数示例演示了模板的实际应用。函数模板是STL的重要基础,通过template关键字实现类型通用化,使代码更加灵活高效。

2025-07-04 15:40:38 241

原创 C++核心编程_职工管理系统(PART08清空文件及职工数据)

摘要:本文分析了职工管理系统数据清空功能的实现问题。原代码仅将指针数组元素设为NULL而未释放内存,存在内存泄漏风险。正确做法应先使用delete释放堆内存,再置为nullptr避免悬空指针。关键区别在于:delete释放内存但需后续处理,而单纯置NULL仅断开引用不释放内存。改进方案应结合两者,先释放内存再置空指针,确保内存安全。该案例凸显了指针操作中内存管理的重要性。

2025-07-03 09:57:52 240

原创 C++_核心编程_职工管理系统Part05(修改职工信息)

摘要:本文实现了一个职工信息修改功能,通过职工编号定位需要修改的记录。系统首先验证数据文件是否为空,然后根据输入的职工编号查找对应记录。找到后显示原信息,并允许修改职工ID、姓名和岗位类型(普通职工/经理/老板)。修改后的信息会替换原记录并保存到文件中。若查找失败会提示"查无此人"。该功能采用面向对象设计,使用派生类处理不同岗位类型,确保数据修改后能及时持久化保存。

2025-07-02 16:15:25 128

原创 C++_核心编程_职工管理系统Part05(删除职工信息)

摘要:该功能实现通过职工ID删除职工信息并保存至文件。主要步骤:1)检查职工是否存在(IsExist函数);2)若存在则使用数组前移方式删除数据(m_EmpArray[i]=m_EmpArray[i+1]);3)更新职工总数(m_EmpNum--)并保存文件(save函数)。删除前会验证文件是否为空,删除后提示操作结果。关键点包括ID查找、数组元素移动和数据持久化保存。

2025-07-02 15:54:02 228

原创 算法详解_选择排序(C++实现)及与冒泡排序的比较

本文详细介绍了选择排序和冒泡排序两种基础排序算法。选择排序通过反复查找未排序部分的最小元素并交换位置实现排序,时间复杂度为O(n²),但交换次数固定为O(n),效率较高。冒泡排序通过相邻元素比较交换使较大元素"冒泡"至末尾,时间复杂度同样为O(n²),但交换次数可能高达O(n²),稳定性更好。文章对比了两者在时间复杂度、交换次数、稳定性等方面的差异,指出选择排序更适合小规模数据且不要求稳定性的场景,而冒泡排序则适合需要稳定性的情况。最后通过C++代码示例展示了两种算法的具体实现,并提供了

2025-07-02 15:47:02 919

原创 hello算法_C++_ 最差、最佳、平均时间复杂度

摘要:文章探讨了在随机打乱的数组中查找特定元素的时间效率问题。通过生成1到n的随机数组并在其中查找数字1的索引,说明算法性能与输入数据分布相关。提供的C++代码展示了数组生成、随机打乱和线性查找的实现过程,验证了在最坏情况下时间复杂度为O(n)的结论。该实验表明,对于随机分布的输入数据,查找效率取决于目标元素的位置分布。

2025-07-01 21:56:08 753

原创 hello算法_C++_ 最差、最佳、平均时间复杂度

摘要:文章探讨了在随机打乱的数组中查找特定元素的时间效率问题。通过生成1到n的随机数组并在其中查找数字1的索引,说明算法性能与输入数据分布相关。提供的C++代码展示了数组生成、随机打乱和线性查找的实现过程,验证了在最坏情况下时间复杂度为O(n)的结论。该实验表明,对于随机分布的输入数据,查找效率取决于目标元素的位置分布。

2025-07-01 21:45:40 137

原创 hello_算法_迭代与递归

本文介绍了算法中实现重复执行的两种基本控制结构:迭代和递归。迭代通过循环结构(for/while)重复执行任务,分为简单循环和嵌套循环,具有代码紧凑、效率高的特点。递归通过函数自我调用解决问题,包含终止条件、递归调用和返回结果三个要素,采用"分治"思想自上而下分解问题。文章对比了两者的差异:迭代效率高、内存固定,适合简单任务;递归代码简洁但开销大,适合树、图等复杂问题。特别探讨了尾递归优化的原理及限制,并指出递归与栈结构的密切关系。最后强调应根据问题特性选择合适方法,在可读性与性能之间取

2025-07-01 16:08:00 1108

原创 C++_核心编程_职工管理系统Part04(显示职工信息)

摘要:在职工管理系统中实现了显示职工信息功能。在workerManager.h中声明了void Show_Emp()成员函数,在workerManager.cpp中实现该功能。函数首先检查文件是否为空,若非空则遍历职工数组,通过多态机制调用每个职工的showInfo()方法显示信息。最后添加系统暂停和清屏功能。该功能完善了系统的职工信息展示模块。

2025-07-01 09:51:21 301

原创 C++_核心编程_职工管理系统Part03(文件交互写文件保存职工数据)

摘要:本文描述了一个职工管理系统的文件读写功能实现方案。首先通过添加文件操作接口实现职工数据保存功能,包括指定文件路径、声明保存接口和实现保存操作。其次针对程序初始化时的三种不同情况(文件未创建、文件存在但为空、文件存在且有数据)分别进行处理:使用标志位判断文件状态,通过字符读取检测文件是否为空,并在添加职工时更新标志位。对于有数据的情况,详细说明了如何读取职工信息并初始化数组,包括获取职工人数、按部门类型创建不同职工对象并存入数组的操作流程。

2025-06-25 16:34:49 465

原创 C++ 指针 vs 数组

指针与数组既有联系又有区别:指针可以通过算术运算访问数组元素,数组名本质上是一个不可修改的指针常量。示例程序展示指针ptr可以遍历数组var并修改元素值,但直接对数组名var进行自增运算(var++)是非法的,因为数组名是常量指针。不过仍可用指针表达式*(var+2)来修改数组元素,这种形式不会改变数组名本身的值。这体现了指针和数组在访问元素时的相似性,以及数组名作为常量指针的特殊性。

2025-06-23 17:16:20 157

原创 C++二级指针的用法指向指针的指针(多级间接寻址)

C++二级指针(指向指针的指针)通过存储指针变量的地址来实现多级间接访问。普通指针指向数据,而二级指针指向指针变量本身,其类型为数据类型加*(如int**)。二级指针常用于访问指针数组,例如字符串指针数组,通过指针偏移和解引用操作可以方便地遍历数组元素。示例展示了如何用const char**类型的二级指针访问月份字符串数组,通过用户输入的数字获取对应的月份名称。这种机制增强了指针操作的灵活性,适用于需要处理指针集合的场景。

2025-06-23 16:54:15 730

原创 C++_核心编程_职工管理系统Part02(二级指针、数组、工厂模式)

摘要:本文讲解了如何实现批量添加职工功能,核心是利用堆区数组和二级指针管理不同类型职工对象。主要步骤包括:1) 计算新数组大小(原数据+新增数);2) 创建新堆数组并拷贝原数据;3) 通过工厂模式创建具体的职工子类对象;4) 释放原数组并更新指针;5) 实现用户交互界面录入职工信息。关键点在于动态内存管理和多态指针数组的应用,通过Worker**二级指针实现灵活的对象管理。

2025-06-23 16:37:46 180

原创 C++_核心编程_职工管理系统Part01(多态特性)

摘要:本文介绍了一个基于C++多态实现的职工管理系统设计方案。系统分为三类职工(普通员工、经理、老板),需管理编号、姓名、岗位和职责信息。主要功能包括:增删改查职工信息、排序、清空数据等。设计思路包括:创建管理类、菜单功能接口、职工抽象类及其派生类(普通员工、经理、老板),通过多态实现不同职工类型的管理。系统采用文件存储数据,界面交互式操作,提供完整的企业职工管理解决方案。

2025-06-22 21:20:38 349

原创 C++_核心编程_二进制文件操作

摘要:本文展示了C++中二进制文件读写操作。通过定义Person类(含姓名和年龄字段),演示了如何使用ofstream的write方法将对象数据写入文件,以及ifstream的read方法从文件读取数据并还原为对象。写操作将对象强制转换为char指针写入二进制文件,读操作反向还原数据并输出验证,实现了简单的对象序列化与反序列化功能。

2025-06-19 21:58:26 88

原创 C++_核心编程_文本文件操作

摘要:C++文件操作指南 文件类型:文本文件(ASCII)和二进制文件 头文件:<fstream> 三种操作类: ofstream:写文件 ifstream:读文件 fstream:读写文件 示例代码: 写文件示例(注释状态) 4种读文件方式(注释状态) 注意:文件操作可实现数据持久化,程序结束后不丢失

2025-06-19 21:53:19 98

原创 C++核心编程_多态案例三-电脑组装

本文展示了使用C++实现电脑组装的案例。通过定义CPU、显卡和内存条的抽象基类,以及Intel和Lenovo厂商的具体实现类,构建了一个模块化的电脑组装系统。Computer类通过组合方式集成三大组件,调用各组件的工作方法实现电脑运行。测试时组装了三台不同配置的电脑(全Intel、全Lenovo、混合配置),验证了系统的灵活性。该设计体现了面向对象的抽象、封装和多态特性,便于扩展新的硬件厂商。代码示例展示了接口抽象、组件组装和资源管理的完整实现流程。

2025-06-17 17:03:03 80

原创 C++_核心编程_虚析构和纯虚析构

摘要:本文演示了C++中虚析构函数和纯虚析构函数的使用方法。通过在Animal基类中声明虚析构函数或纯虚析构函数(virtual ~Animal()=0),可以确保父类指针释放子类对象时正确调用子类析构函数。代码示例展示了Cat子类继承自Animal的情况,其中包含堆区数据,需要正确析构。核心要点包括:1)虚析构/纯虚析构解决父类指针释放子类对象的问题;2)若子类无堆区数据可不使用;3)包含纯虚析构函数的类为抽象类。

2025-06-16 21:41:37 105

原创 C++_核心编程_多态案例二-制作饮品

摘要:本文通过C++多态技术实现饮品制作流程。定义抽象基类AbstractDrinking,包含煮水(boilWater)、冲泡(brewMethods)、倒杯(pourCup)和加料(pourSeasonings)四个纯虚函数,以及规定流程的makeDrinking方法。派生类MakeCaffe和MakeTea分别实现咖啡和茶的具体制作步骤。测试函数DoWork通过基类指针调用不同饮品的制作方法,展示多态特性。程序输出显示咖啡制作需加糖和牛奶,而茶则加柠檬,体现了不同饮品制作过程的差异。

2025-06-10 15:30:38 394

C++-核心编程-职工管理系统Part01(多态特性)

C++-核心编程-职工管理系统Part01(多态特性)

2025-06-22

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除