- 博客(28)
- 收藏
- 关注
原创 STL3--手把手带你实现list
创作初心:在加深个人对知识系统理解的同时希望可以帮助到更多需要的同学😄🚀🛠️座右铭:功不唐捐,玉汝于成。
2026-03-01 17:19:49
602
10
原创 STL2---深入探索vector的实现
创作初心:在加深个人对知识系统理解的同时希望可以帮助到更多需要的同学😄🚀🛠️座右铭:心向深耕,不问阶序;汗沃其根,花自满枝。以为内我们是要实现一个和库里面的vector几乎一样的容器,所以我们可以先查看一下库里面的实现接下来就开始我们的vector之旅。
2026-02-06 16:43:14
712
14
原创 STL2--vector的介绍以及使用
int main()struct A//我们先定义一个类:_a1(a1), _a2(a2)int _a1;int _a2;//我们先使用push_back实现以下三个东西//1.传入构造好的对象A a1(1, 2);//2.传入匿名对象//3.多参数构造函数的隐式类型转换需要用{}括起来//我们再使用emplace_back实现一下://1.传入构造好的对象A a2(1, 2);//2.传入匿名对象//3.不需要使用{}进行隐式类型转换。
2026-02-04 17:55:31
710
11
原创 深入解析C++ String类的实现奥秘
创作初心:在加深个人对知识系统理解的同时希望可以帮助到更多需要的同学😄🚀🛠️座右铭:心向深耕,不问阶序;汗沃其根,花自满枝。
2025-10-25 22:24:52
941
32
原创 STL1---C++必会之string类
创作初心:在加深个人对知识系统理解的同时希望可以帮助到更多需要的同学😄🚀🛠️座右铭:心向深耕,不问阶序;汗沃其根,花自满枝。string既然作为一个类那么我们就不得不提一提它的成员变量和成员函数了。
2025-10-15 17:57:25
1032
16
原创 从 gcc 编译到 make 自动化:Makefile 入门全指南
简单说,就是让一个 “已定义的宏” 变回 “未定义” 状态,后续代码中这个宏将不再生效,这一操作可以很好的控制宏的生命周期。值得一提的是:一、
2025-10-07 09:51:30
975
14
原创 从 “不会装软件” 到 “Vim 熟练工”:一篇搞懂软件包管理器与 Vim 的实用逻辑
创作初心:在加深个人对知识系统理解的同时希望可以帮助到更多需要的同学😄🚀🛠️座右铭:心向深耕,不问阶序;汗沃其根,花自满枝。在开始今天的学习之前,请允许我先介绍一下云服务器。我相信很多同学在学linux的时候可能和我有一样的困惑,那就是我们为什么要租一台云服务器呢?今天我们先解释一下这个问题。
2025-09-14 14:03:15
1053
12
原创 Linux权限以及常用热键集合
!<命令开头>:最近一次以指定字符开头的命令Linux严格意义上是一个操作系统,我们称之为核心(kernel),但是一般的用户不能直接使用kernel,而是通过一个外壳程序shell,来与kernel进行沟通。如何理解呢?从技术角度来说,shell的最简单的定义:命令解释器,主要包含:对比Windows GUI:我们操作Windows,不是直接操作Windows的内核,而是通过图形化接口,点击,从而完成我们的操作(比如进入D盘的操作,我们通常双击D盘盘符,或者运行起来一个应用程序)shell对于Linux:
2025-09-10 13:09:35
1189
13
原创 Linux基础指令(入门必备2.0)
创作初心:在加深个人对知识系统理解的同时希望可以帮助到更多需要的同学😄🚀🛠️座右铭:心向深耕,不问阶序;汗沃其根,花自满枝。
2025-09-05 15:17:26
987
8
原创 Linux常见指令(入门必备)
创作初心:在加深个人对知识系统理解的同时希望可以帮助到更多需要的同学😄🚀🛠️座右铭:心向深耕,不问阶序;汗沃其根,花自满枝首先我们要知道一个概念,linux里面一切皆文件。
2025-09-02 17:43:57
860
5
原创 碎碎念--2025/8/11
我是来自四川农业大学的一名学生,主修的专业是计算机科学与技术,在机缘巧合下我和编程结下了很深的缘分,他像是我在自由散漫的大学里抓到的一根藤蔓。不管他的尽头是什么,我想顺着他一步一步的走下去,带着我对跑步一样的热情。做什么我下面会讲,缘由就是我意识到时间在一天天的流逝,自己成长的速度过于缓慢,我不想让学习成为我不愿干其他事情的遮羞布。此时正值暑假,不知不觉已经虚度40余天,今天看到师哥4年前写下的博客,带着一些这些日子低效学习的愧疚和对未来的渴望,于是写下这篇博客。我超级想成为一位很厉害的IT工程师。
2025-08-11 17:56:47
267
1
原创 读完直接上手入门C++初阶模版
函数模版在使用时里面的类型被实例化,生成特定类型的函数版本class 类名//成员函数public:private:T* _array;注意:类模板在定义对象的时候,只能显示定义,不能让编译器自己去隐式推演3.2类模板里面成员函数的定义与声明分离在指定类域的时候,需要类名+<模板参数>,比如:Stack<T>public:, _size(0)private:T* _array;_size++;
2025-08-01 17:47:54
432
3
原创 C++的内存管理,一键解锁new和delete
对于自定义类型,new开辟空间以后,还会自动调用构造函数,delete会调用析构函数!!!(这个才是new和delete最大的区别所在)class Apublic:A():_a(5),_b(4)~A()private:int _a;int _b;return 0;new,delete,malloc,free除了在调用构造函数和析构函数有区别外,还有一个区别就是malloc在申请失败时返回的是空,而new则是报错。int main()
2025-08-01 10:03:58
1008
1
原创 C++入门--lesson2
/类体:由成员函数或者成员变量组成class是类的关键字,className是类的名字,{}是类的主体,注意,类定义结束时后面的分号不能省略。值得一提的是类的两种定义方式:1.声明和定义全都放在类体中,需要注意:成员如果在类中定义,编译器可能把其当成内联函数处理,也就是在调用这个函数的时候,有可能在调用处被展开,这样就不需要为了调用函数建立栈帧2.声明在.h中(其实就是在类中啦),成员函数的定义在.cpp中。
2025-05-16 20:44:57
888
原创 C++入门--lesson 1
命名空间需要一个关键词namespace(顾名思义,命名空间),然后接上你给这个命名空间取的名字,最后再加上{}即可。
2025-05-06 23:28:32
704
3
原创 数据结构入门之复杂度讲解
那么我们就要剖析一下二分法的操作原理,比如一个数组的长度是n,那么为了找到那个数字就要不断地/2,当除到最后结果为1的时候,我们就真正地找到了那个数字,二分法的时间复杂度就是找一共要除几个2,我们可以列一个式子2^x = N,所以x = log以2为底N的对数,因为这个数字很难打印出来,我们通常会写成logN,但是有的教辅上面会写成LgN,其实不建议大家这样写,因为这样的书写和数学上的以10为底的对数的表示撞了。有的同学会说,一看来是接收的参数就是有n个元素的数组,那么这个算法的空间复杂度是不是就是n?
2025-03-02 17:47:25
1045
原创 自定义类型:联合和枚举
联合体和结构体一样,联合体是由一个或多个成员组成,这些成员可以是不同的类型。但是编译器只给最大的那个成员分配足够的内存空间,联合体的特点就是所有成员共用一个内存空间,所以联合体也叫作共同体。因为他们共用一个内存空间,所以一个值改变的时候,其他成员的值也跟着变化。通过计算struct的大小是8(因为存在内存对齐),union的大小是4,我们可以看到,union和struct的大小是不一样的。
2025-02-22 21:48:44
918
1
原创 自定义类型:结构体
位段和结构体的不同:1.位段的成员必须是int,unsigned int或者signed int 2.位段的成员后面必须要有一个冒号和一个数字。int b : 6;int c : 7;int main()//这里没有变量,所以我们//只能计算这个数据类型的大小,但是都是一样的我们知道一个int是4个字节,但是计算出来以后,发现三个int才占了4个字节,这是怎么回事呢?
2025-02-22 11:02:00
701
原创 数据在内存中的存储
其实超过一个字节的数据在内存中存储的时候就有存储顺序的问题,按照存储顺序的不同,我们分为大端字节序存储和小端字节序存储。(注意是以字节为单位)大端字节序存储模式:是指数据的低位(比如个位)字节内容,保存在内存的髙地址处,而数据的高位字节内容,保存在内存的低位地址处。小端字节序存储模式是指数据的低位字节内容,保存在内存的低地址处,而数据的高位字节内容,保存在内存的高位地址处。int main()//无符号打印十进制整数return 0;
2025-02-20 11:59:13
955
1
原创 字符函数和字符串函数
这是一系列专门做字符分类的函数,他的头文件是ctype.h,空白字符:空格字符‘ ’,换页字符‘\f’,换行字符‘\n’,回车字符‘\r’,制表符‘\t’和垂直制表符‘\v’大写字母A~Z这里我们以islower为例,它所接收的参数是int型,但是char也是int型的一种,因为char在内存里面也是以ASCALL码值存储,所以既可以在括号里面传入整型也可以传入字符型元素。islower通过返回值来说明是否是小写字母,如果是小写字母,那么就返回一个非0的整数。
2025-02-06 00:25:41
1018
原创 深入理解指针4
a[4][2]很好找到,重点就是找到p[4][2],虽然a和p的类型不一样但是也可以强制赋值,a和p指向的是同一个地方,紧接着翻译p[4][2],p[4]就是首元素的地址指向的位置跳过四行,因为p的每一行是四个元素,所以找到的是16+2=18,然而a[4][2],找到的是20+2=22,18-22=-4,所以第二问的答案是-4。我们首先要清楚,sizeof是一个操作符,只是计算操作数占内存的大小,不管内存中存放的是什么内容,sizeof可以接收变量和类型。
2025-02-03 23:12:09
392
原创 深入理解指针3
2.在排序结构体的时候,我们在定义qsort传入的第四个参数,即函数时,注意强制类型转换时的步骤,我们要先给他强制类型转换成原本的指针类型,也就是结构体指针,也就是结构体类型+*,然后再解引用,得到变量名,然后再使用成员访问运算符(.),它的使用操作是变量名+.+成员名。补充:在这里我们对地址进行了加法,对这个运算结果造成影响的有两个因素,一个是地址的类型(因为如果地址类型是char,那么+1自动跳过一个字节,如果是int,那么+1跳过的就是四个字节),另一个就是所加的数的大小(这个已经确定了)
2025-01-29 19:41:05
1042
原创 初步认识函数栈帧的创建与销毁
当我们要调用函数时,就先把形参压进去了,通过指针的偏移找到形参,形参只是实参的一份临时拷贝,并不会改变实参。调用的函数的结果是通过寄存器带回的。
2025-01-12 00:52:25
603
1
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅