- 博客(52)
- 收藏
- 关注
原创 【MySQL】数据库基础
文件可以用来保存数据,但是对数据的管理和查询上是存在一定的问题;文件的安全性问题文件不利于数据查询和管理文件不利于存储海量数据文件在程序中控制不方便需要设计一种更加高效的数据管理方式。
2024-03-25 19:30:00 1271
原创 C++模板(下)
泛型编程的有力支撑——模板,在上次的文章中已经可以使用起来,也对STL的学习有了很大作用,本文会再次将一些细小知识汇总作为参考。模板的缺点分离编译,链接之前不会交互,没有实例化;模板的报错特别**,就是会给人打电报的感觉,摸不到头脑;模板会导致代码膨胀问题,也会导致编译时间变长优点:模板复用了代码,节省资源,更快的迭代开发,产生了C++的标准模板库(STL)
2024-02-02 07:00:00 936
原创 【C++修炼秘籍】Stack和Queue
stack是一个先进后出(Frist In Last Out,FILO)的数据结构。只有一个出口,允许插入,删除,取栈顶元素,但除了最顶端,不能有任何方法存取其他元素,不允许任何遍历行为,所以stack不允许有遍历行为;queue是一个先进先出(First In First Out,FIFO)数据结构。有两个出口,queue允许插入、删除,从尾端加入元素,取得头端加入元素。但是除了尾端可以加入,最头端可以去出元素外,没有任何方法存取元素,所以queue也不允许有遍历行为。
2024-01-28 07:15:00 791
原创 【C++修炼秘籍】List深度剖析
相较于vector连续线性空间,list就显示的复杂很多,相较于vector,list既有优势也有缺点,两者并无好坏之分,只是各有其适用范围。首先,list的一个好处就是插入删除一个元素,就增加或释放一个元素空间,对空间的利用效率是极高的,对于任意位置的插入删除,list永远是O(1)的时间复杂度。list和vector作为两个最常被使用的容器,什么时机去使用,也是一个比较复杂的问题,随着文章的深入,会慢慢对这个问题做出解答。
2024-01-24 11:20:09 1136
原创 【C++修炼秘籍】Vector深度剖析
vector的数据安排以及操作方式,与array非常相似,就像数组一样,vector采用连续的存储空间,可以像数组一样的随机访问,但是又不像数组一样,它的大小是可以随意改变的,而且是自动处理;有了vector后,相比于C语言的数组使用要方便许多,接下来让我们深入了解一下;vector动态开辟空间,是可变大变小的数组序列容器;像数组一样随机访问;分配一个新的数组,然后将全部元素移到这个数组。就时间而言,这是一个相对代价高的任务,因为每当一个新的元素加入到容器的时候,vector并不会每次都重新分配大小。
2024-01-18 07:30:00 888
原创 [C++刷题之旅]反转链表
反转单链表,如果创建一个新的链表,遍历旧链表头插是可以解决问题,但是题目中要求了O(1)的空间复杂度,这就意味着,我们不能在开辟额外空间;这道题和上一道题是一样的,我们只需要找到一个指定区间,指定区间的使用第一题的反转就好了,然后记录下区间前后指针链接起来就好啦;这道题可以增加一个虚拟头结点,这样反转首结点会方便一点,反转后返回虚拟头结点的下一个结点;给定一个单链表的头结点pHead(该头节点是有值的,比如在下图,它的val是1),长度为n,反转该链表后,返回新链表的表头。【题目链接】。
2023-06-17 06:45:00 244
原创 【C++】string
C语言中,字符串是以'\0'结尾的一些字符的集合,为了操作方便,C标准库中提供了一些str系列的库函数,底层空间需要用户自己管理,稍不留神可能还会越界访问而C++中的string类相比C语言的字符串使用更加简单、方便、快捷,基本很少有人去使用C库中的字符串操作函数一、标准库里的string1、字符串是表示字符序列的类2. 标准的字符串类提供了对此类对象的支持,其接口类似于标准字符容器的接口,但添加了专门用于操作单字节字符字符串的设计特性。
2023-03-03 22:12:15 300
原创 【C++修炼秘籍】| 拷贝构造和赋值运算符重载
如果一个类中什么成员都没有,简称为空类。空类中真的什么都没有吗?并不是,任何类在什么都不写时,编译器会自动生成以下6个默认成员函数。默认成员函数:用户没有显式实现,编译器会生成的成员函数称为默认成员函数前面已经介绍了构造函数和析构函数,接下来介绍其余几位;
2023-02-04 08:00:00 954
原创 【Linux_】环境变量
环境变量(environment variables)一般是指在操作系统中用来指定操作系统运行环境的一些参数常见变量|查看环境变量方法|环境变量相关的命令通过系统调用|获取或设置环境变量环境变量通常是具有全局属性的|导出环境变量|删除自定义环境变量|通过代码如何获取环境变量命令行参数表 : argv[] 编辑 环境变量表 :env[]通过第三方变量environ获取环境变量
2023-01-21 07:00:00 1381
原创 [Linux_]make/Makefile
一个工程中的源文件不计数,其按类型、功能、模块分别放在若干个目录中,makefile定义了一系列的规则来指定,哪些文件需要先编译,哪些文件需要后编译,哪些文件需要重新编译,甚至于进行更复杂的功能操作makefile带来的好处就是——“自动化编译”,一旦写好,只需要一个make命令,整个工程完全自动编译,极大的提高了软件开发的效率。
2023-01-05 11:14:48 523
原创 【c++修炼秘籍】C/C++内存管理
c/c++的内存管理相似但也不同,本文简要分析c/c++的内存管理方式,主要会使用new和delete进行c++的动态内存管理
2022-11-11 15:19:40 200 4
原创 【Linux_】权限
Linux严格意义上说的是一个操作系统,我们称之为“核心(kernel) “ ,但我们一般用户,不能直接使用kernel。而是通过kernel的“外壳”程序,也就是所谓的shell,来与kernel沟通。如何理解?为什么不能直接使用kernel?接下来,我们进入权限的时间。
2022-10-30 21:28:20 233
原创 【C++修炼秘籍】日期类的实现
类和对象的知识复习,主要实现了日期的各种功能读取,打印,计算日期加减天数后的日期,日期之间间隔的天数,日期之间的大小比较;实现了构造析构,拷贝构造,赋值运算符重载等等,运算符重载,加深映像
2022-10-15 17:40:23 664
原创 【C++修炼秘籍】类和对象之构造函数和析构函数
如果一个类中什么成员都没有,简称为空类。空类中真的什么都没有吗?并不是,任何类在什么都不写时,编译器会自动生成以下6个默认成员函数。默认成员函数:用户没有显式实现,编译器会生成的成员函数称为默认成员函数。本文着重介绍构造函数和析构函数
2022-10-12 18:11:00 549 3
原创 红帽Linux安装教程
本虚拟机安装的是VM15.5,其他虚拟机也可以;使用红帽6的镜像,需要请私信;图中没有的步骤使用默认就好;拥有一个虚拟机,下载镜像;注意:如果你是用vm10,你系统是win11则容易蓝屏,建议虚拟机换成vm15.5;
2022-10-06 21:48:37 1536
原创 【Linux_】常见指令(二)
我们继续了解常用指令,加油!rmdir是一个与mkdir相对应的命令。mkdir是建立目录,而rmdir是删除命令。🔑适用对象:具有当前目录操作权限的所有使用者🔨功能:删除空目录📌常用选项:-p 当子目录被删除后如果父目录也变成空目录的话,就连带父目录一起删除。现有如下目录:注意: rmdir只能删除目录,并且是空目录;
2022-10-04 23:08:00 2108 22
原创 【C++修炼秘籍】类和对象(一)
{// 类体:由成员函数和成员变量组成};// 一定要注意后面的分号class为定义类的关键字,ClassName为类的名字,{}中为类的主体,注意类定义结束时后面分号不能省略。类体中内容称为类的成员:类中的变量称为类的属性或成员变量;类中的函数称为类的方法或者成员函数。成员函数如果在类中定义,编译器可能会将其当成内联函数处理。
2022-10-02 17:25:29 718 3
原创 【Linux_】常见指令(一)
简单介绍一下发展历程:Linux系统1991年10月5日,赫尔辛基大学的一名研究生Linus Benedict Torvalds在一个Usenet新闻组(comp.os.minix)中宣布他编制出了一种类似UNIX的小操作系统,叫Linux。新的操作系统是受到另一个UNIX的小操作系统——Minix的启发,该系统是由一名叫Andrew S Tanenbaum的教师开发的。读者也许猜想所发布的这个系统应该是Linux的0.01版本,实际上不是这样。
2022-09-26 23:32:22 676 6
原创 【C++修炼秘籍】C++入门,初入山门(下)
上篇博客,简单介绍了C++入门的部分知识,接下来我们介绍,内联函数,auto等知识,有些大致了解即可,gogogo内联函数以inline修饰的函数叫做内联函数,编译时C++编译器会在调用内联函数的地方展开,没有函数调用建立栈帧的开销,内联函数提升程序运行的效率。ps:像快速排序时,每趟排序都需要交换数据,单独写出一个交换函数比较好,可以重复利用,但是这回每次交换都要建立函数栈帧,很多次很多次后,消耗有点大,所以可以使用内联函数;在C语言中是如何解决这个问题呢?
2022-09-25 18:23:21 1183 5
原创 【C++修炼秘籍】C++入门,初入山门(上)
C语言是结构化和模块化的语言,适合处理较小规模的程序。对于复杂的问题,规模较大的程序,需要高度的抽象和建模时,C语言则不合适。为了解决软件危机, 20世纪80年代, 计算机界提出了OOP(object oriented programming:面向对象)思想,支持面向对象的程序设计语言应运而生。
2022-09-23 18:48:37 743 17
原创 【C语言简单实现数据结构】排序之交换排序和归并排序
常见排序相对于插入排序和选择排序,交换排序和归并排序比较难。1. 冒泡排序是一种非常容易理解的排序2. 时间复杂度:O(N^2)3. 空间复杂度:O(1)4. 稳定性:稳定1. 快速排序整体的综合性能和使用场景都是比较好的,所以才敢叫快速排序2. 时间复杂度:O(N*logN)3. 空间复杂度:O(logN)4. 稳定性:不稳定1. 归并的缺点在于需要O(N)的空间复杂度,归并排序的思考更多的是解决在磁盘中的外排序问题。2. 时间复杂度:O(N*logN)
2022-09-14 18:32:12 904 3
原创 【C语言简单实现数据结构】排序之插入排序和选择排序
排序:所谓排序,就是使一串记录,按照其中的某个或某些关键字的大小,递增或递减的排列起来的操作。稳定性:假定在待排序的记录序列中,存在多个具有相同的关键字的记录,若经过排序,这些记录的相对次序保持不变,即在原序列中,r[i]=r[j],且r[i]在r[j]之前,而在排序后的序列中,r[i]仍在r[j]之前,则称这种排序算法是稳定的;否则称为不稳定的。内部排序:数据元素全部放在内存中的排序。外部排序:数据元素太多不能同时放在内存中,根据排序过程的要求不能在内外存之间移动数据的排序...
2022-08-17 20:58:36 308 6
原创 【C语言简单实现数据结构】详解二叉树
树的东西可太多了,主要是二叉树和堆实现比较详细,而且已经感觉到了难度,本文只是对基础概念进行梳理,在写作过程中文章篇幅较大,难免会出现纰漏,欢迎各位指出,也欢迎大家交流。本文涉及很多递归,要体会递归思想,刷题也是必不可少的。一、树概念及结构。......
2022-08-14 18:41:38 653 16
原创 【C语言实现简单的数据结构】栈和队列
顺序表链表到这里告一段落,在实现栈和队列的时候虽然在逻辑上和顺序变链表不同,但物理结构我们可以使用顺序变或者链表来实现。但是根据结构的逻辑不同,可以根据各自优缺来选择,所以请学好顺序表链表,接下来进入栈和队列。---...
2022-08-09 16:50:27 537 12
原创 【C语言简单实现数据结构】带头循环双向链表
无头单向非循环链表:结构简单,一般不会单独用来存数据。实际中更多是作为其他数据结构的子结构,如哈希桶、图的邻接表等等。另外这种结构在笔试面试中出现很多。带头双向循环链表:结构最复杂,一般用在单独存储数据。实际中使用的链表数据结构,都是带头双向循环链表。另外这个结构虽然结构复杂,但是使用代码实现以后会发现结构会带来很多优势,实现反而简单了。接下来,在实现过程中就会体会到,如果少一个条件实现就会麻烦不少,但这些条件正好实现起来是非常巧妙。不同点顺序表链表存储空间物理上一定连续。...
2022-08-03 16:49:33 203 8
原创 【C语言实现简单数据结构】单链表
中间/头部的插入删除,时间复杂度为O(N)增容需要申请新空间,拷贝数据,释放旧空间。会有不小的消耗。增容一般是呈2倍的增长,势必会有一定的空间浪费。例如当前容量为100,满了以后增容到200,我们再继续插入了5个数据,后面没有数据插入了,那么就浪费了95个数据空间。思考如何解决以上问题呢?下面给出了链表的结构来看看单链表在头插和头删中有一定的优势,而对于尾插来讲,以及需要遍历寻找到最后一个结点,这是缺点,他没有完全的解决顺序表中的缺点。如果我们删除pos原位置的结点呢?Gitee。...
2022-07-31 17:13:03 344 6
原创 【C语言实现简单数据结构】顺序表
线性表(linear list)是n个具有相同特性的数据元素的有限序列。 线性表是一种在实际中广泛使用的数据结构,常见的线性表:顺序表、链表、栈、队列、字符串…线性表在逻辑上是线性结构,也就说是连续的一条直线。但是在物理结构上并不一定是连续的,线性表在物理上存储时,通常以数组和链式结构的形式存储。顺序表是用一段物理地址连续的存储单元依次存储数据元素的线性结构,一般情况下采用数组存储。在数组上完成数据的增删查改。顺序表一般可以分为:静态顺序表只适用于确定知道需要存多少数据的场景。静态顺序表的定长数组导
2022-07-28 17:40:08 203 10
原创 C语言程序环境和预处理
_FILE__//进行编译的源文件__LINE__//文件当前的行号__DATE__//文件被编译的日期__TIME__//文件被编译的时间__STDC__//如果编译器遵循ANSIC,其值为1,否则未定义这些预定义符号都是语言内置类型在VS编译器中,__STDC__是不支持的,所以VS编译器是不支持__STDC__的也就是不支持ANSIC,在gcc中是支持的,,所以一般以gcc的为准。那预定义符号有什么用呢,例如可以记录日志;在这里举个栗子1000registerfor(...
2022-07-20 11:14:47 109 1
原创 C语言文件操作
文件是具有符号名的,在逻辑上具有完整意义的一组相关信息项的有序序列。信息项是构成文件内容的基本单位。读指针用来记录文件当前文件之前的读取位置,它指向下一个将要读取的信息项。写指针用来记录文件当前的写入位置,下一个将要写入的信息项被写到该处。...
2022-07-19 16:27:34 213
原创 C语言动态内存开辟
malloc柔性数组(flexiblearray),C99中,结构中的最后一个元素允许是未知大小的数组,这就叫做『柔性数组』成员。inti;//柔性数组成员}type_a;inti;//柔性数组成员}type_a;
2022-07-17 19:55:42 238 9
原创 库函数的模拟实现
这是关于字符串,的一部分库函数,库函数太多了,本文只是写一部分。在模拟实现中,还是有一些部分并不是很完善,也不是很顺利,在模拟实现过程中,正是感受到了程序的精妙绝伦。学习的路还长,加油!...
2022-07-16 16:41:57 126
原创 C语言自定义结构类型之枚举,联合
枚举就是一一列举,enum Day,enum Sex,enum Color都是枚举类型。{}中内容是枚举类型的可能取值,也叫。这些可能取值都是有值的,默认从0开始,一次递增1,当然在定义的时候也可以赋初值。例如:后面默认加1;我们知道可以通过来定义常量;为什么不能用?而要来个?特征是这些成员公用一块空间;但是真正的只是简单地最大成员的大小吗?我们看到了un.i和un.c的地址是相同的,当我们给赋值时,也发现也是公用的。但是大小怎么计算?也是有对齐的。...
2022-07-13 16:48:05 228
原创 C语言自定义类型之结构体篇
1.1结构体声明1.2结构体特殊声明在声明的时候,可以不完全声明,这就是匿名结构体类型;但是;上述代码中,我们尝试将合法吗?我们觉得相同但编译器会把上面俩个声明当成完全不同的俩个类型。在数据结构里,有一种链表结构;在这里我们猜想一下,一个结构体中,能否包含一个结构体吗?如果像这样定义的话,那么sizeof(struct student)的结果是?分析下这个结构体大小,里面包含int型,但是结构体里面又有结构体,这就无法判断。这样是不是就可以计算了。这里说的是不可以直接自己套娃自己,但可以嵌套
2022-07-12 17:33:19 439
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人