自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 【Linux】make/makefie,gdb的使用

上一章节我们介绍了gcc/g++的使用,也对动静态库有了一个初步的了解。这让我们对程序运行的过程有了更加深刻的了解,接下来我们就要讲一讲make/makefile的使用,以及gdb的使用。

2024-04-22 21:51:41 279

原创 【高阶DS】跳表

2.在底层链表的基础上,创建多层索引。每一层索引都是原始链表的一个子集,其中第一层索引包含所有元素,第二层索引包含部分元素,第三层索引包含更少的元素,以此类推。跳跃表的平均查找、插入和删除操作的时间复杂度为O(log n),其中n为元素的个数。因此,跳跃表是一种高效的数据结构,适用于需要快速查找、插入和删除操作的场景。当进行查找、插入或删除操作时,从最高层的索引开始,逐层向下进行查找,直到找到目标元素或者找到插入或删除位置。4.在跳跃表中进行插入或删除操作时,需要同时更新多层索引,以保持跳跃表的平衡性。

2024-01-01 16:26:29 635 1

原创 【Linux】gcc/g++的使用,动静态库的理解

前面我们讲解了一下vim的使用,它方便了我们进行文本的删改。接下来,我们就要理解一下gcc/g++,并且对动静态库有一个基础的理解。首先我们要明白gcc/g++是干什么的,其实这两个都是编译源代码的工具,他会识别文件后辍来编译源代码,形成可执行文件。gcc是编译.c文件的,g++是编译.cpp文件的。我们在学习c语言的时候学习了编译的四个过程,这里我们在重新回顾一下。首先是,它分为四步,分别是头文件展开、去注释、条件翻译(可以实现对代码的动态裁剪)、宏替换。

2023-12-26 22:28:28 637 1

原创 【Linux】vim的使用

在学习vim之前,我们首先要了解一下,vim是什么。vim其实是一款文本编辑器。其实在早期,人们用的更多的是vi,这个跟vim一样,也是一款文本编辑器,只不过vim是多模式的文本编辑器。接下来我们来重点关注一下vim。

2023-12-26 18:14:44 645 1

原创 【c++】仿函数和优先级队列

这一节我们来讲一讲优先级队列,但是我们得先引入一个概念,那就是仿函数。

2023-12-19 21:31:20 338 1

原创 【c++】stack、queue的模拟实现,deque的讲解

之前我们讲了vector和list的模拟实现,本质上就是实现一个顺序表和单链表。今天我们要实现的是stack和queue。我们在学习数据结构的时候,相信大家都手撕过这两个玩意,我们再来回顾一下这两个的特点。

2023-12-19 16:01:51 335 1

原创 【Linux】权限

今天我们来讲一讲linux中的权限的部分。我们刚开始接触linux的时候,一般都是用root来进行操作的,也就是以超级管理员的身份来操作服务器。但是在之后,随着我们对权限的深入了解,我们也要用普通用户来操作服务器了。

2023-11-28 15:59:26 29

原创 【c++】迭代器、string类、vector类、list类的模拟实现

我们在学习完模板的基本定义之后,我们就要开始用模板来解决各种问题了。我们说模板是泛型编程,那么他就可以简化我们很多的代码量,本质上就是我们的工作交给了编译器实现。接下来我们就来模拟实现一下常用模板类。当然模拟实现之前,我们还要补充一下迭代器的定义与功能。C++中的迭代器是一种用于遍历容器中元素的对象。它类似于指针,可以指向容器中的元素,并且可以进行自增、自减等操作。在学习初期,我们可以简单的把迭代器认为是指针。

2023-11-24 18:51:56 45 2

原创 【c++】模板

在我们学完了c/c++的内存管理后,我们就要对模板来进行讲解了。模板来说,其实是泛型编程,有了STL标准模板库,我们就可以用模板来解决各种问题。在今后我们面对应用各种数据结构类型的题时,我们就可以更加方便的使用对应的数据结构。

2023-11-15 23:25:13 25 1

原创 【linux】基本指令

我们开始讲linux啦,一些linux的历史我就不讲啦,包括环境的安装,网上都有教程,这里我选择的是华为云的HECS,镜像选择的是centos7。接下来我们就来看看linux有哪些基本指令。

2023-11-08 23:13:28 38 2

原创 【C++】内存管理(new和delete的使用)

我们学习完了c++类的定义以及其中的默认成员函数,并且也了解了一些其他的功能接下来我们就要对内存管理进行一个讲解。其实在c语言阶段,我们简单接触了一下malloc等函数,这些是动态分配内存的重要函数。接下来我们就要引进c++专门的动态分配内存空间的方法。

2023-11-07 21:36:49 48 2

原创 【c++】初始化列表、单参数构造函数的隐式类型转换、友元函数

上次我们讲了最重要的默认成员函数,还有几个不是那么重要的,比如const等,就没有细讲,只需要注意具有const的变量不能修改就可以了。我们之前说,c++类中的成员变量,不用构造函数就只是声明,但是我们不能光只声明函数吧。所以我们就引入了初始化列表这个概念。它以冒号开始,以逗号分隔,每个成员变量跟一个放在括号中的初始值或表达式。我们看以下代码:以上就是初始化列表的方式,可以看到,const成员变量必须在初始化列表里初始化,所以初始化列表的作用非常之大。单参数构造函数的隐式类型转换是指当一个类的构造函数

2023-11-02 21:59:12 57 2

原创 【c++】拷贝构造和运算符重载

前面我们讲了最基本的两个类中的默认成员函数--构造函数和析构函数。接下来我们来看两个最重要的默认成员函数--拷贝构造函数和运算符重载函数。

2023-10-30 19:16:59 27

原创 【C++】内敛函数、构造函数和析构函数

接上节的引用知识点,我们继续来看看内联函数、构造函数和析构函数。

2023-10-30 12:15:21 96 2

原创 【c++】引用

反过来我们再看a,我们用一个别名来接收n的别名,那么a就是n的别名,始终指向这个空间,第一次cout调用的时候,正常传参,由于函数栈帧并没有清理空间,别名a就是1;并不是,这个是编译器的问题,我们先看b,我们通过引用返回时,由于此编译器下函数栈帧并没有清理空间,那么返回的n的别名,所指向的空间依旧是n的空间,赋值给了b,那么b就是1,但是如果函数栈帧被清理了,那么b的值应该会接收一个随机值。引用类型必须和引用实体是同种类型的。可以看到,a和b的值是一模一样的,地址也是一模一样的,可以见得b是a的一个别名。

2023-10-21 14:25:30 30 1

原创 【C++】命名空间、缺省函数、重载函数

入门c++,我们一定要打好基础,踏踏实实一步一个脚印,接下来我们就来看c++入门基础的三个章节。

2023-10-20 12:00:51 32 1

原创 数据结构中排序大汇总

排序在我们学习算法中,是十分重要的。现在我们就对初阶数据结构的算法进行一个总结。插入排序是在时间复杂度为o(n^2)中,最快的一个。其思想就是,在数组中从左往右开始,确定每一个数,在其前面所在的位置,遍历完数组后,即可实现排序。由于思路比较简单,这边就直接上代码了:其实插入排序只是一个前菜,真正的插入排序plus是希尔排序,希尔排序是在插入排序的基础上,分组进行插入排序,通过预处理,来实现时间复杂度较低的排序。我们来分析下面一段代码:gap是希尔排序中,每段插入排序的间隔,明白了这个点,那就好分

2023-10-20 08:52:34 38 1

原创 二叉树小结

树是一种数据结构,其表现形式有很多种,可以是顺序表,也可以是链表。然而树中应用最多的那便是二叉树了,下面我就来总结一下二叉树。首先是二叉树-堆。堆是一种完全二叉树,分为大堆和小堆,大堆是父节点都大于子节点的二叉树,小堆是父节点小于子节点的二叉树。建堆的过程我们需要用向上调整法。以下我们都以大堆为例:这就是向上调整的过程,其中父节点的下标(parent)一定是(chlid-1)/ 2。相反,左子节点的下标是parent*2+1,右节点的下标是parent*2+2,这个会在下下面用到。下面是建堆的结果:前

2023-10-14 18:11:48 28 3

原创 栈和队列的实现

栈和队列的实现

2023-10-04 23:03:56 26 1

原创 带头双向循环链表的增删查改

带头双向循环链表

2023-10-01 21:29:21 22

原创 无限制的升序降序

相信大家学了回调函数之后,对与qsort一定不陌生了吧,它采用了快速排序的思想。那我们想,能不能自己创建一个可以实现无限制排序的函数呢。通过这个我们就可以很好的实现自由升序降序了。

2023-08-16 15:40:15 31 1

原创 制作日历表

老规矩,我们先用Calendar类开辟一个内存,方便之后使用其方法,我将它取名为c。x就是每年第一天和每个月第一天所对应的星期几,要注意的是,星期天对应的是1,星期六对应的是7。这样我们就可以把每一月份的天数全部打印出来,其中“%d-5s”是左对齐的意思,其只能用println函数完成。这便是简单的输入年份,但是光有年份是远远不够的,我们还得把整个日历给设计出来。首先,我们需要一个可以输入年份的代码,这也很简单,用Scanner类可以做到。这便是我们想要达到的效果,那么要怎么完成呢,请听我慢慢道来。

2023-05-31 20:23:09 178 1

空空如也

空空如也

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

TA关注的人

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