- 博客(56)
- 收藏
- 关注
原创 万能钥匙:解锁 C++ 模板的无限可能(二)
一个程序(项目)由若干个源文件共同实现,而每个源文件单独编译生成目标文件,最后将所有目标文件链接起来形成单一的可执行文件的过程称为分离编译模式。优点模板复用了代码,节省资源,更快的迭代开发,C++的标准模板库(STL)因此而产生.增强了代码的灵活性.缺陷模板会导致代码膨胀问题,也会导致编译时间变长.出现模板编译错误时,错误信息会十分凌乱,不容易定位错误.
2026-01-30 12:50:35
690
18
原创 告别浅层调用:深入模拟实现STL Stack/Queue/Priority_Queue,知其所以然
使用正向迭代器适配反向迭代器的时候会认为它两存在对称关系,那么此时就会导致两个问题。
2026-01-25 14:34:50
759
18
原创 C++ STL 容器适配器详解:玩转 Stack (后进先出) 与 Queue (先进先出)
1.stack是一种容器适配器,专门用在具有后进先出操作的上下文环境中,其删除只能从容器的一端进行元素的插入与提取操作。2. stack是作为容器适配器被实现的,容器适配器即是对特定类封装作为其底层的容器,并提供一组特定的成员函数来访问其元素,将特定类作为其底层的,元素特定容器的尾部(即栈顶被压入和弹出。3. stack的底层容器可以是任何标准的容器类模板或者一些其他特定的容器类,这些容器类应该支持以下操作:empty:判空操作.back:获取尾部元素操作.
2026-01-20 08:00:00
611
3
原创 深入剖析List的底层实现原理
而一个结点需要存储的信息有:数据、前一个结点的地址、后一个结点的地址,于是该结点类的成员变量也就出来了(数据、前驱指针、后继指针)。因为该结点类只需要根据数据来构造一个结点即可,而结点的释放则由list的析构函数来完成。但是,上面的访问的方式还是有些绕,按照曾经我们学过的方式,我们更偏向于使用 ->的方式来进行访问.先记录当前结点指针的指向,然后让结点指针指向前一个结点,最后返回“自减”前的结点指针。先让结点指针指向前一个结点,然后再返回“自减”后的结点指针。判断这两个迭代器当中的结点指针的指向是否不同。
2026-01-19 00:18:14
687
14
原创 Qt常用控件(三)
这种设定方式其实并不方便. 尤其是界⾯如果内容⽐较多, 不好计算. 而且⼀个窗口大小往往是可以调整的, 按照绝对定位的⽅式, 也无法自适应窗⼝大小. 因此 Qt 引入 "布局管理器" (Layout) 机制, 来解决上述问题.运行程序, 观察代码效果. 可以看到两个按钮之间已经存在了间隔了.调整 QSpacerItem 不同的尺寸, 即可看到不同的间距.⼀个表格控件. ⼀个表格中包含若干行, 每⼀行又包含若干列. 表格中的每个单元格, 是⼀个 QTableWidgetItem。
2026-01-16 10:33:05
875
13
原创 QT常用控件(二)
QAbstractButton中和QRadioButton关系较大的属性.属性说明checkable是否能选中checked是否已经被选中. checkable 是 checked 的前提条件.是否排他.选中⼀个按钮之后是否会取消其他按钮的选中.对于来说默认就是排他的.
2026-01-02 21:30:37
812
22
原创 从零掌握 List:高效操作与性能优化实战
1. list是可以在常数范围内在任意位置进行插入和删除的序列式容器,并且该容器可以前后双向迭代。2. list的底层是双向链表结构,双向链表中每个元素存储在互不相关的独立节点中,在节点中通过指针指向其前一个元素和后一个元素。3. list与非常相似:最主要的不同在于是单链表,只能朝前迭代,已让其更简单高效。4.与其他的序列式容器相比(arrayvectordeque)list通常在任意位置进行插入、移除元素的执行效率更好。5.与其他序列式容器相比,list和。
2025-12-15 18:06:12
1209
19
原创 QT常用控件(一)
Widget 是 Qt 中的核⼼概念. 英文原意是 "小部件", 我们此处也把它翻译为 "控件" . 控件是构成⼀个图形化界⾯的基本要素.像上述示例中的, 按钮, 列表视图, 树形视图, 单行输入框, 多行输入框, 滚动条, 下拉框等, 都可以称为 "控件"
2025-12-13 19:52:01
1180
18
原创 深入剖析vector的底层实现原理
start:指向容器的头._end:指向有效数据的尾._endofstorage:指向整个容器的尾部.
2025-12-08 22:03:47
1016
18
原创 Qt中的信号与槽
在Qt中,用户和控件的每次交互过程称为⼀个事件。例如 "用户点击按钮" 是⼀个事件,"用户关闭窗口" 也是⼀个事件。每个事件都会发出⼀个信号,例如用户点击按钮会发出 "按钮被点击" 的信号,用户关闭窗口会发出 "窗口被关闭" 的信号。Qt 中的所有控件都具有接收信号的能力,⼀个控件还可以接收多个不同的信号。对于接收到的每个信号,控件都会做出相应的响应动作.例如,按钮所在的窗口接收到"按钮被点击"的信号以后,会做出"关闭自己"的响应动作;
2025-11-30 14:07:38
1127
18
原创 深入理解 Linux 环境变量与进程地址空间布局
在系统当中查找一个最合适调度的进程的时间复杂度是一个常数,不随着进程增多而导致时间成本增加,我们称之为进程调度O(1)算法!
2025-11-23 18:34:16
1263
17
原创 从零开始:打造属于你的链式二叉树
由于现在大家对二叉树结构掌握还不够深入,为了降低uu们的学习成本,此处手动快速创建一棵简单的二叉树,快速入二叉树操作学习,等二叉树结构了解的差不多时,我们反过头再来研究二叉树真正的创建方式。访问结点所做的操作依赖于具体的应用问题,遍历是二叉树上最重要的运算之一,也是二叉树上进行其它运算的基础.层上的节点,接着是第三层的节点,以此类推,自上而下,自左至右逐层访问树的结点的过程就是层序遍历。层序遍历就是从所在二叉树的根节点出发,首先访问第一层的树根节点,然后从左到右访问第。设二叉树的根节点所在。
2025-11-17 03:22:30
806
12
原创 别再只说“进程”了!深入 Linux 内核看进程如何被调度与管理
就绪状态:如果进程没有入运行队列,那么进程就处在就绪状态.阻塞状态:类似与Linux中的S状态与D状态.运行状态:进程在运行队列中,那么就处于运行状态即Linux中的R状态.终止状态:等价于Linux中的Z状态与X状态(死亡状态).
2025-11-14 14:10:25
1172
15
原创 冯诺依曼体系结构与操作系统
1:冯诺依曼体系结构有的uu会有疑问,先将输入的设备数据交给内存,再由内存将数据交给CPU,这个过程真的比CPU直接从输入设备获取数据更快吗?.虽然内存的大小只有4G/8G/12G/16G等,但是既然内存有大小,那么它就具有预存储数据的能力,而这就是提高冯诺依曼体系结构的核心所在.这里还需要提到根据统计学原理,当一个数据正在被访问时,那么下一次有很大可能会访问其周围的数据.所以当CPU需要获取某一行数据时,内存可以将这一行的数据后面的数据一同加载进来,而,这样下次CPU就可以直接从内存当中获取数据.
2025-11-12 07:30:00
756
2
原创 命令行即生产力:打造你的Linux开发利器
一般来说,大多数的IDE都有这个命 令,比如:Delphi的make,Visual C++的nmake,Linux下GNU的make。好啦,家人们,关于Linux环境基础开发实现这块的相关细节知识,博主就讲到这里了,如果uu们觉得博主讲的不错的话,请动动你们。的所有指令,而且还有一些新的特性在里面。在命令模式下,ctrl + v-------->hjkl进行区域选择--->包含仅包含//---->只管文件的依赖性,即,如果在我找了依赖关系之后,冒号后面的文件还是不在,那么对不起, 我就不工作啦。
2025-11-07 20:54:21
1320
3
原创 新手也能懂的 Linux 权限指南
目录的可执行是表示你能否在目录下执行命令.如果没有-x权限,则无法对目录执行任何命令,甚至无法cd进入目录,即使目录依旧有-r读权限而如果目录具有-x权限,但没有-r权限,则用户可以执行命令,可以cd进入目录.但由于没有目录的读权限,因此在目录下,即使可以执行ls命令,但依旧没有读出目录下的文档.好啦,家人们,关于Linux权限实现这块的相关细节知识,博主就讲到这里了,如果uu们觉得博主讲的不错的话,请动动你们滴滴。
2025-11-06 16:41:06
1290
4
原创 揭秘:打造高效日期管理神器——日期类的深度实现
hello,家人们,今天咱们来实现一个日期类,好啦,废话不多讲,开干.在实现日期类之前,首先我们得确定日期类中有哪些函数需要实现滴,那么为了令这个日期类更加得系统化,我们实现一个声明与定义分离的日期类。
2025-11-05 18:02:35
402
3
原创 Qt开发初识
hello,家人们,我们将进入qt初识的学习,好了,废话不多讲,开干!1:Qt实现Hello World(标签实现)在C语言和C++的学习中,我们都是以实现hello world为入门,那么同理,在Qt中也是如此,只不过在Qt中有两种方式实现hello world。
2025-11-05 16:36:47
1155
10
原创 QT背景介绍与环境搭建
Qt 是⼀个跨平台的 C++ 图形⽤⼾界⾯应⽤程序框架。它为应⽤程序开发者提供了建⽴艺术级图形界⾯所需的所有功能。它是完全⾯向对象的,很容易扩展。Qt 为开发者提供了⼀种基于组件的开发模式,开发者可以通过简单的拖拽和组合来实现复杂的应⽤程序,同时也可以使⽤ C++ 语⾔进⾏⾼级开发。指采用图形方式显示的计算机操作用户界面,是计算机与其使⽤者之间的对话接⼝,是计算机系统的重要组成部分。如下分别是:Android ⼿机图形⽤⼾界⾯ 和 IOS ⼿机图形⽤⼾界⾯。
2025-11-02 08:00:00
1077
6
原创 C++ vector使用技巧:高效管理动态数据
1.vector是表示可变大小数组的序列容器。2.就像数组一样,vector也采用的连续存储空间来存储元素。也就是意味着可以采用下标对vector的元素进行访问,和数组一样高效。但是又不像数组,它的大小是可以动态改变的,而且它的大小会被容器自动处理。3. 本质讲,vector使用动态分配数组来存储它的元素。当新元素插入时候,这个数组需要被重新分配大小为了增加存储空间。其做法是,分配一个新的数组,然后将全部元素移到这个数组。
2025-11-01 15:50:06
945
9
原创 深入剖析String类的底层实现原理
即每个对象都有一份独立的资源,不要和其他对象共享。父母给每个孩子都买一份玩具,各自玩各自的就不会有存在任何矛盾.
2024-11-17 18:49:15
1122
39
原创 数据结构背后的秘密:时间复杂度与空间复杂度详解
算法就是定义良好的计算过程,取一个或一组的值为输入,并产生出一个或一组值作为输出。简单来说算法就是一系列的计算步骤,用来将输入数据转化成输出结果。
2024-10-11 09:58:32
1294
25
原创 文件处理不再难:带你轻松攻克C语言文件操作
函数名功能适用范围fgetc字符输入函数所有输入流fputc字符输出函数所有输出流fgets文本行输入函数所有输入流fputs文本行输出函数所有输出流fscanf格式化输入函数所有输入流fprintf格式化输出函数所有输出流fread二进制输入文件fwrite二进制输出文件。
2024-10-07 18:01:55
1418
37
原创 设计完美数据蓝图:玩转自定义结构体
/数值域int _value;//指针域}NewNode;位段的声明与结构体式类似,但是以下两点不同位段的成员必须是int、unsigned int 或者signed int,在C99中位段成员的类型也可以选其他类型.位段的成员名后边有一个冒号和一个数字.6.1.1:代码1struct Aint _a : 2;int _b : 5;int _c : 5;int _d : 5;
2024-09-04 09:45:27
943
30
原创 代码时光机:Git基础速成
在本地的git仓库中,有几个文件或者目录很特殊index:暂存区,git add后会更新该内容.默认指向master分支的一个指针.ref/heads/master:文件保存当前master分支的最新commit id.objects:包含了创建的各种版本库对象以及内容,简单理解就是放了git维护的所有修改.2.2:场景二在之前的学习,我们已经清楚了如何向仓库中添加文件、并且对于工作区、暂存区、版本库也有了一定的认识.那么博主再展示一种添加文件的场景,这样子能够加深对工作区、暂存区、版本库的理解.
2024-09-01 09:03:04
1359
33
原创 驾驭高效编程:一探C++ STL的奥秘
STL(standdard template library-标准模板库):是,不仅是一个可复用的组件库,2.:STL的版本2.1:原始版本Alexander Stepanov、Meng Lee在惠普实验室完成的原始版本,本就着开源的精神,他们声明能够允许任何人运用、拷贝、修改、传播、商业使用这些代码,无需付费.唯一的条件就是也需要向原始版本一样进行开源使用.
2024-08-26 18:53:54
730
29
原创 超级字符串技能:提升你的编码游戏
第⼀个参数指定⼀个字符串,它包含了0个或者多个由sep字符串中⼀个或者多个分隔符分割的标记。strtok函数找到str中的下⼀个标记,并将其用\0结尾,返回⼀个指向这个标记的指针.(注:strtok函数会改变被操作的字符串,所以在使用strtok函数切分的字符串⼀般都是临时拷贝的内容并且可修改)strtok函数的第⼀个参数不为 NULL,函数将找到str中第⼀个标记,strtok函数将保存它在字符串中的位置。strtok函数的第⼀个参数为 NULL,
2024-08-14 22:00:26
1129
28
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅