- 博客(15)
- 收藏
- 关注
原创 模拟实现简单list
list在实际中使用也较为广泛,模拟实现其底层可以让我们更加对模版,类和对象等内容更加了解。这是一个对于初学者比较友好的简单版本的模拟实现,希望对大家有所帮助。
2024-08-15 20:44:37 272
原创 模拟实现简单vector
vector作为STL成员之一,在实际中也使用广泛。所有了解实现一个简单的vector也有助于我们更好的认识vector及其底层实现。这里注意不能把模版实现在两个不同的文件,这样会报链接错误,实现在同一个文件就行了。希望对大家有所帮助。
2024-08-14 21:39:17 268
原创 模拟实现简单string
string作为STL一员在实际中使用非常广泛,我们需要对其常用接口进行掌握和熟练使用。那么对于string的模拟实现也是很有必要的,有助于帮助我们更加了解string的底层实现。以上是直接基于顺序表实现的string的常用接口。希望对大家有所帮助。
2024-08-14 21:22:05 245
原创 动态内存管理
new对于内置类型只开空间相当于malloc,里面存的是随机值,但对于自定义类型就不一样了,他们去掉用构造函数去进行初始化操作。在C语言中我们用malloc,calloc,realloc,free来管理堆上的内存,那么c++是怎样的呢?delete也是一样的,对于内置类型相当于free,但是对于内置类型他会先调用析构函数,然后才释放空间。从中我们可以看到比C语言更加简洁,因为省掉了强制类型转换和需要传参传字节数的麻烦。c++用new和delete两个关键字去取代了上诉函数。这是一个简单的例子。
2024-07-20 15:05:49 206
原创 类和对象中
构造函数是特殊的成员函数,需要注意的是,构造函数虽然名称叫构造,但是构造函数的主要任务并不是开空间创建对象(我们常使⽤的局部对象是栈帧创建时,空间就开好了),而是对象实例化时初始化对象,类似于完成Init的功能。构造函数有许多特性,这些特性能帮助我们理解类的默认成员函数。1.函数名与类名相同.2.无返回值。(返回值啥都不需要给,也不需要写void,不要纠结,C++规定如此)3.对象实例化时系统会自动调用对应的构造函数4.构造函数可以重载。
2024-07-16 20:54:34 1220
原创 类和对象上
class为定义类的关键字,Date为类的名字,{}中为类的主体,注意类定义结束时后⾯分号不能省 略。类体中内容称为类的成员:类中的变量称为类的属性或成员变量;类中的函数称为类的⽅法或 者成员函数。类可以类比于C语言中的结构体去初步理解。为了区分成员变量,⼀般习惯上成员变量会加⼀个特殊标识,如成员变量前⾯或者后⾯加_或者m 开头,注意C++中这个并不是强制的,只是⼀些惯例。
2024-07-16 17:20:15 699
原创 C++入门浅谈
定义命名空间,需要使⽤到namespace关键字,后⾯跟命名空间的名字,然后接⼀对{}即可,{}中 即为命名空间的成员。命名空间中可以定义变量/函数/类型等。namespace本质是定义出⼀个域,这个域跟全局域各⾃独⽴,不同的域可以定义同名变量,所以下 ⾯的rand不在冲突了。C++中域有函数局部域,全局域,命名空间域,类域;域影响的是编译时语法查找⼀个变量/函数/ 类型出处(声明或定义)的逻辑,所有有了域隔离,名字冲突就解决了。
2024-07-12 11:39:41 907
原创 二叉树理解
现实中我们通常把堆(一种二叉树)使用顺序结构的数组来存储,需要注意的是这里的堆和操作系统虚拟进程地址空间中的堆是两回事,一个是数据结构,一个是操作系统中管理内存的一块区域分段。这里面包含了了二叉树的创建与销毁,层序遍历,前序中序后序遍历,求节点个数,求树的高度,叶节点的个数,第k层的节点个数,判断是否为完全二叉树,二叉树的查找等函数。* 因为度为0的结点没有孩子,故度为0的结点不产生边;左孩子指的是child指针指向的是它的从左往右的第一个子节点,右兄弟指的是brother指针指向它的右边相邻的兄弟节点。
2024-05-30 22:53:28 2084 2
原创 栈和队列的理解
栈(Stack)是一种特殊的线性数据结构,它具有后进先出(Last In First Out, LIFO)的特性。在栈这种数据结构中,元素的添加和删除操作都发生在同一端,称为“栈顶”。相对地,另一端称为“栈底”,栈底是固定的,而栈顶是动态变化的。新元素总是被添加到栈顶,已有的元素也是从栈顶被移除。因此,最后加入的元素会是第一个被取出的元素,这也是“后进先出”这一名称的由来。队列:只允许在一端进行插入数据操作,在另一端进行删除数据操作的特殊线性表,队列具有先进先出。
2024-05-13 21:10:54 802 1
原创 复杂度理解
时间复杂度是计算机科学中的一个基础概念,它帮助我们理解和评估算法的效率,对于算法设计和优化至关重要。算法的时间复杂度是一个函数,算法中的基本操作的执行次数,为算法的时间复杂度。时间复杂度是衡量算法随输入数据规模增长而执行时间增长趋势的一种度量。它可以反应算法的优劣,时间复杂度越小则算法越优越更容易被实际应用,反之则难以被采用。时间复杂度通常采用大O的渐近表示法来描述。注意这里是渐近,这就代表了时间复杂度是一种粗略的估算而非准确的描述,它通常是反应的算法速率的量级,而非一个准确值。
2024-05-03 11:36:36 1746
原创 C语言实现简易贪吃蛇
Win32 API,即Windows的32位应用程序编程接口(Application Programming Interface),是微软为软件开发者提供的一系列复杂的函数、消息、数据结构和控件的总称。它是创建在Windows 95、Windows NT以及之后版本操作系统上运行的应用程序的关键工具。它提供了大量的工具和接口,使得开发者能够创建出符合用户需求的桌面应用程序,用于访问Windows操作系统的功能。
2024-04-27 17:37:17 2025 2
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人