自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 解密——二进制的奥秘

8进制的数字每⼀位是0~7的,0~7的数字,各自写成2进制,最多有3个2进制位就足够了,比如7的2进制是111,所以在2进制转8进制数的时候,

2024-10-16 00:00:00 632 9

原创 【C++】——list 容器的解析与极致实现

人的一切痛苦,本质上都是对自己的无能的愤怒。—— 王小波是C++(STL)中的一个成员,其。不同于连续的、紧密排列的数组容器,List容器的内部是由双向链表构成的,使得它在插入和删除操作上,就如同行云流水一般顺畅,不需移动其它元素。环状链表的尾是一个空节点,符合“左闭右开”区间。需要频繁进行插入和删除操作的场合。更多地需要随机访问元素。

2024-10-15 12:13:07 1267 61

原创 【C++】——vector深度剖析&&模拟实现

这个是对迭代器区间进行的构造函数,思路很简单,把迭代器区间的数据依次尾插就可以了(这里之所以另外使用一个新的模版,而不是使用vector类的模版,是为了兼容其他容器类型)。<2> 如果拷贝的是内置类型的元素,memcpy既高效又不会出错,但如果拷贝的是自定义类型元素,并且自定义类型元素中涉及到资源管理时,就会出错,根据我们刚才所查看的源码,我们要使用三个迭代器,要使用迭代器,我们可以使用指针进行模拟。经过typedef的底层指针,而T类型是模版类的参数。值得注意的是STL里的 insert有返回值!

2024-09-26 18:36:06 1199 81

原创 【C++】——解析vector

将进行对vector的解析,先简单的理解一下初步功能。(大部分与string相似)使用STL的三个境界:能用,明理,能扩展 ,那么下面的vector,也是按照这个方法去学习。1.1认识vectorvector文档介绍<1>vector是表示数组的序列容器,其大小可以动态变化。<2>与数组一样,vector使用连续的存储空间来存储元素,也就是意味着可以采用下标对vector的元素进行访问,和数组一样高效。但是,与数组不同的是,vector的大小可以动态变化,存储空间将由容器自动管理。

2024-09-23 17:51:37 1367 107

原创 【C++】——多态详解

多态是面向对象技术(OOP)的核心思想之一,我们称具有继承关系的多个类型称为多态类型,通俗来讲:就是多种形态,具体点就是去完成某个行为,当不同的对象去完成时会产生出不同的状态。多态分为编译时多态(静态多态)和运行时多态(动态多态),编译时多态(静态多态)主要就是函数重载和函数模板,他们传不同类型的参数就可以调用不同的函数,通过参数不同达到多种形态,之所以叫编译时多态,是因为他们实参传给形参的参数匹配是在编译时完成的,通常我们把编译时一般归为静态,运行时归为动态。运行时多态,

2024-09-20 10:43:44 1663 81

原创 【C++】——继承详解

这就是继承的语法格式继承方式与访问限定符号一样有着三种,不同的继承方式与不同的类成员组合会是不同的情况总结一下规律:<1>基类 private 成员在派生类中无论以什么方式继承都是不可见的。这里的不可见是指基类的私有成员还是被继承到了派生类对象中,但是语法上限制派生类对象不管在类里面还是类外面都不能去访问它。将年龄变为私有验证一下是否继承到了派生类对象可以看到继承下来了但是不可以访问!!<2>如果基类成员不想在类外直接被访问,但需要在派生类中能访问,就定义为 protected。

2024-09-17 15:41:06 1578 84

原创 【C++】——string的模拟实现

在这里即一个一个字节的拷贝,动态申请资源时候如果浅拷贝会指向同一块资源,会有着程序崩溃的问题同一块空间析构了两次 程序崩溃深拷贝即调用拷贝构造,编译器生成的拷贝构造是浅拷贝,需要我们自己显示实现拷贝构造来进行深拷贝。

2024-09-13 17:44:05 1185 87

原创 【C++】——string类的使用

引入size() 的原因是为了与其他容器的接。

2024-09-09 16:30:24 1194 84

原创 【C++】模板

对于模板函数的使用,

2024-08-25 16:09:16 1120 79

原创 【数据结构】——链式二叉树

1>二叉树的结构体 包含了数据和指向左右子树的指针}BTNode;<2>二叉树结点的创建<3>二叉树的创建Tip:二叉树是递归定义的,都可以单独看作 根、左子树、右子树。

2024-08-02 17:06:55 1258 45

原创 【数据结构】——堆的实现与算法

对比向上调整建堆,h-1层向下调整只需要移动1层,而向上调整需要移动h-1次因此向下调整是更优的建堆算法。插入一个数据后不再是小堆需要将新数据调整到合适的位置,所以堆的插入就是在数组插入数据再向上调整即可。剩下数据与堆顶数据比较,如果比堆顶数据大,那么替代堆顶进堆(覆盖堆顶数据然后向下调整)堆插入的过程其实就是建堆,在一个堆的末尾插入数据然后向上调整形成一个新的堆。Top—K问题:N个数中求最大的(最小的)前K个数据,一般N远大于K。<2>数据比堆顶数据大,覆盖调整之后形成一个新的小堆,再次比较。

2024-07-31 16:05:23 1384 43

原创 数据结构——栈和队列

定义一个栈结构体,里面放着指向栈数组的指针,栈顶元素的下标 top ,空间大小 capacity。

2024-07-27 11:35:00 1552 32

原创 [C++]类和对象(下)

尽量使用初始化列表初始化,因为那些你不在初始化列表初始化的成员也会走初始化列表,如果这个成员在声明位置给了缺省值,初始化列表会用这个缺省值初始化。如果你没有给缺省值,对于没有显示在初始化列表初始化的内置类型成员是否初始化取决于编译器,C++并没有规定。对于没有显示在初始化列表初始化的自定义类型成员会调用这个成员类型的默认构造函数,如果没有默认构造会编译错误。1.2对象拷贝时编译器的优化• 现代编译器会为了尽可提高程序的效率,在不影响正确性的情况下会尽可能减少⼀些传参和传参过程中可以省略的拷贝。

2024-07-24 11:37:00 1123 39

原创 C/C++的内存管理

在申请自定义类型的空间时,new会调用构造函数,delete会调用析构函数,而malloc与free不会。<1>操作类class Apublic:: _a(a)~A()private:int _a;int main()// new/delete 和 malloc/free最大区别是 new/delete对于【自定义类型】除了开空间//还会调用构造函数和析构函数// 隐式类型转换free(p1);delete p2;// 内置类型是几乎是一样的// C。

2024-07-23 11:03:57 789 42

原创 [C++]类和对象(中)

C++中,类的默认成员函数就是用户没有在类定义中显示声明实现,编译器会自动生成的成员函数称为默认成员函数。

2024-07-19 18:11:53 1308 38

原创 【C++】类和对象(上)

类是 C++ 的核心特性,通常被称为用户定义的类型。类用于指定对象的形式,是一种用户自定义的数据类型,它是一种封装了数据和函数的组合。类中的数据称为成员变量,函数称为成员函数。类可以被看作是一种模板,可以用来创建具有相同属性和行为的多个对象。• class为定义类的关键字,classname为类的名字,{}中为类的主体,注意类定义结束时后⾯分号不能省略。类体中内容称为类的成员;类中的变量称为类的属性或成员变量;类中的函数称为类的⽅法或者成员函数。

2024-07-18 17:08:38 1191 39

原创 C++入门基础

• 定义命名空间,需要使⽤到namespace关键字,后⾯跟命名空间的名字,然后接⼀对{}即可,{}中 即为命名空间的成员。命名空间中可以定义变量/函数/类型等。• namespace本质是定义出⼀个域,这个域跟全局域各⾃独⽴,不同的域可以定义同名变量,所以下⾯的rand不在冲突了。• namespace只能定义在全局,当然他还可以嵌套定义。• 项⽬⼯程中多⽂件中定义的同名namespace会认为是⼀个namespace,不会冲突。• C++标准库都放在⼀个叫std(standard)的命名空间中。

2024-07-11 18:07:22 700 23

原创 【初探数据结构】

数据结构(Data Structure)是计算机存储、组织数据的方式,指相互之间存在一种或多种特定关系的 数据元素的集合。算法(Algorithm):就是定义良好的计算过程,他取一个或一组的值为输入,并产生出一个或一组值作为 输出。简而言之算法就是描述解决问题的方法。

2024-07-08 18:04:08 879 19

原创 第一篇博客

我是一名江西某院校学生,专业并非是计算机相关,但我想尝试转入计算机专业。因此自学编程,但是对于小白来说还是很难的。随着学习时间当初晦涩难懂的英文字母也慢慢可以理解。已经能够独自写出正确代码。我认为学习是个反思的过程,任何东西都是需要反思总结得出自己的经验的。编程不仅需要理论支撑还需要动手能力。逻辑思维和实践不可或缺。至于编程目标,目前没有太大的就业方向,当下应该夯实基础,学好c语言。寒假之际,基本跟上老师基础,然后多加实践敲代码。最后希望大家都能在二进制世界遨游。

2024-01-16 22:41:29 387 7

空空如也

空空如也

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

TA关注的人

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