- 博客(24)
- 收藏
- 关注
原创 微信小程序开发学习第一弹
微信小程序开发与网页开发的主要区别在于:运行环境(微信环境vs浏览器)、API调用(小程序无法使用DOM/BOM)、开发模式(需专用开发工具)和文件结构(pages目录包含4个基本文件)。小程序使用WXML/WXSS替代HTML/CSS,提供特有组件(view、scroll-view等)和尺寸单位rpx。配置文件(app.json等)管理全局设置,API分为事件监听、同步和异步三类。开发需创建小程序账号,使用开发者工具,按特定目录结构组织项目文件。
2025-10-23 19:40:46
1032
原创 动态规划与背包等经典题型汇总
本文系统介绍了动态规划算法及其在背包问题中的应用。首先概述了动态规划的基本原理,包括最优子结构和状态转移方程构建方法。然后详细解析了三种背包问题:0-1背包、完全背包和多重背包,并给出了相应的C++实现代码。文章还提供了动态规划解题的五步法框架,并通过大量经典例题(如斐波那契模型、路径问题、股票买卖等)展示了不同场景下的动态规划应用,每类问题都包含题目描述、解题思路和代码实现。最后介绍了回文串问题、两个数组的dp问题以及卡特兰数等高级应用。全文通过理论讲解与实例分析相结合,为系统掌握动态规划算法提供了全面指
2025-10-12 20:07:55
709
原创 面向对象的三大机制——多态
通俗来说,就是多种形态,具体点就是去完成某个行为,当不同的对象去完成时会 产生出不同的状态。在虚函数的后面写上 =0 ,则这个函数为纯虚函数。包含纯虚函数的类叫做抽象类(也叫接口 类),抽象类不能实例化出对象。派生类继承后也不能实例化出对象,只有重写纯虚函数,派生 类才能实例化出对象。纯虚函数规范了派生类必须重写,另外纯虚函数更体现出了接口继承。class Carpublic:public:cout << "Benz-舒适" << endl;
2025-05-30 20:41:15
947
原创 二叉搜索树:高效查找与删除指南
情况d:在它的右子树中寻找中序下的第一个结点(关键码最小),用它的值填补到被删除节点 中,再来处理该结点的删除问题--替换法删除。情况b:删除该结点且使被删除节点的双亲结点指向被删除节点的左孩子结点--直接删除。情况c:删除该结点且使被删除节点的双亲结点指向被删除结点的右孩子结点--直接删除。b. 树不空,按二叉搜索树性质查找插入位置,插入新节点。d. 要删除的结点有左、右孩子结点。b. 要删除的结点只有左孩子结点。c. 要删除的结点只有右孩子结点。a. 要删除的结点无孩子结点。1. 二叉搜索树的删除。
2025-05-30 10:19:43
365
原创 容器的底层结构
/ 节点的颜色// 红黑树节点的定义{}// 节点的左孩子// 节点的右孩子// 节点的双亲(红黑树需要旋转,为了实现简单给出该字段)// 节点的值域// 节点的颜色。
2025-05-25 15:21:02
913
原创 深入理解优先队列与堆结构
priority_queue的模拟实现:1. 优先队列是一种容器适配器,根据严格的弱排序标准,它的第一个元素总是它所包含的元素中最大的。2. 此上下文类似于堆,在堆中可以随时插入元素,并且只能检索最大堆元素(优先队列中位于顶部的元 素)。3. 优先队列被实现为容器适配器,容器适配器即将特定容器类封装作为其底层容器类,queue提供一组特 定的成员函数来访问其元素。元素从特定容器的“尾部”弹出,其称为优先队列的顶部。4. 标准容器类vector和deque满足这些需求。
2025-05-06 20:24:30
170
原创 迭代器失效问题
vector的底层是一个指针,或者说对指针进行了封装,他的指针是一个原生态指针T*,因此迭代器失效实际上就是其底层指针所指向的空间被销毁了,从而使用了一块被释放的空间,从而造成程序崩溃,但是vector比较敏感,他表示可变大小序列的数组容器,因此任何可能改变底层空间的操作都有可能导致vector迭代器的失效,比如:resize、reserve、insert、assign、 push_back等.......,并且失效的只是指向被删除节点的迭代器,其他迭代器不会受到影响。
2025-05-06 18:59:38
343
原创 C++中的继承体系
如果说继承是“is-a”关系,那么组合就是“has-a”的关系,与其对应的,组合的耦合度低,代码维护性好,最重要的是,他采用的是黑箱复用,不会破会代码的封装,可以根据要实现不同的功能而去组合不同的函数,所以他也就更加的灵活。注意:派生类对象可以赋值给基类对象/基类指针/基类引用,而基类对象不能赋值给派生类对象,但是基类的指针/引用可以强制类型转换赋值给派生类的指针/引用!而在类里面,友元关系还是不可继承的,而且友元函数必须在类外面,就比如基类的友元不能访问子类的私有与保护成员;4.继承是类层次结构的复用。
2025-04-07 13:25:56
315
原创 动态内存管理
区别:malloc和free是申请释放一个元素的空间,而new和delete是连续申请释放多个空间。C++使用了new和delete来动态管理空间(new和delete配套使用)1. 栈又叫堆栈--非静态局部变量/函数参数/返回值等等,栈是向下增长的。C语言中的内存管理方式:malloc/caloc/realloc/free。2. 堆用于程序运行时动态内存分配,堆是可以上增长的。3. 数据段--存储全局数据和静态数据。4. 代码段--可执行的代码/只读常量。
2025-03-27 20:28:59
116
原创 友元的板块
友元关系是单向的,不具有交换性:比如上述Time类和Date类,在Time类中声明Date类为其友元类,那么可以在Date类中直接访问Time 类的私有成员变量,但想在Time类中访问Date类中私有的成员变量则不行。友元函数可以直接访问类的私有成员,它是定义在类外部的普通函数,不属于任何类,但需要在类的内部声 明,声明时需要加friend关键字。友元函数可访问类的私有和保护成员,但不是类的成员函数 友元函数不能用const修饰;友元关系不能传递:如果B是A的友元,C是B的友元,则不能说明C时A的友元。
2025-03-22 20:26:37
175
原创 数据的存储
比如我们在函数内定义的变量——局部变量,储存在栈帧中;在参数前加static的储存在静态区中;参数申请内存空间就在堆中进行开辟。栈是向下生长的,堆是向上生长的。如下图,变量的存储方式。全局变量储存在常量区中;
2025-03-21 20:39:45
197
原创 构造与析构
在使用C语言中,我们在写栈,队列,堆,二叉树等数据时,有时会忘记写数据的初始化和销毁,造成内存泄漏,但在C++中,会有两个内置类型成员函数帮助我们进行处理,他们就是构造函数和析构函数。对象在销毁时会自动调用析构函数,完成对象中资源的清理;拷贝构造函数:只有单个形参,该形参是对本类类型对象的引用(一把用const修饰),在已存在类类对象创建新的对象自动调用。构造函数:特殊的成员函数,他的任务是初始化对象,而不是开辟空间创造对象;6.(无参的,全缺省)的构造函数统称为默认构造函数,默认构造函数有且只有一个;
2025-03-21 19:42:19
131
原创 this指针
p调用Print(),但不会发生解引用 ,因为Print的地址不存在对象中,p会作为实参传给this指针。p调用Print(),但不会发生解引用 ,因为Print的地址不存在对象中,p会作为实参传给this指针。this指针为空,函数内部访问_a,本质上是this->_a ,他没有语法上的错误,所以A选项排除,选B。上图虽然this指针为空,但函数内部并没有对this指针进行解引用,所以程序正常运行。在类中,类型*const,即成员函数中,不给this指针赋值。栈(常规) 寄存器(优化)
2025-03-17 18:05:09
169
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅