自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 stack和queue

1. stack是一种容器适配器,专门用在具有后进先出操作的上下文环境中,其删除只能从容器的一端进行 元素的插入与提取操作。2. stack是作为容器适配器被实现的,容器适配器即是对特定类封装作为其底层的容器,并提供一组特定 的成员函数来访问其元素,将特定类作为其底层的,元素特定容器的尾部(即栈顶被压入和弹出。3. stack的底层容器可以是任何标准的容器类模板或者一些其他特定的容器类,这些容器类应该支持以下 操作:empty:判空操作back:获取尾部元素操作push_back。

2025-06-10 11:38:02 1186

原创 C++:AVL树

AVL。

2025-06-10 09:00:00 680

原创 类与对象(中)(详解)

6. 关于编译器生成的默认成员函数,很多童鞋会有疑惑:不实现构造函数的情况下,编译器会 生成默认的构造函数。内置类型就是语言提供的数据类 型,如:int/char...,自定义类型就是我们使用class/struct/union等自己定义的类型,看看 下面的程序,就会发现编译器生成默认的构造函数会对自定类型成员_t调用的它的默认成员 函数。C++为了增强代码的可读性引入了运算符重载,运算符重载是具有特殊函数名的函数,也具有其 返回值类型,函数名字以及参数列表,其返回值类型与参数列表与普通的函数类似。

2025-06-09 11:29:54 17908

原创 数据结构:排序详解(使用语言:C语言)

排序:所谓排序,就是使一串记录,按照其中的某个或某些关键字的大小,递增或递减的排列起来的操作。稳定性:假定在待排序的记录序列中,存在多个具有相同的关键字的记录,若经过排序,这些记录的相对次 序保持不变,即在原序列中,r[i]=r[j],且r[i]在r[j]之前,而在排序后的序列中,r[i]仍在r[j]之前,则称这种排 序算法是稳定的;否则称为不稳定的。内部排序:数据元素全部放在内存中的排序。外部排序:数据元素太多不能同时放在内存中,根据排序过程的要求不能在内外存之间移动数据的排序。

2025-06-09 11:29:46 11505 2

原创 类与对象(上)

/ 类体:由成员函数和成员变量组成// 一定要注意后面的分号class为定义类的关键字,ClassName为类的名字,{}中为类的主体,注意类定义结束时后面分 号不能省略。类体中内容称为类的成员:类中的变量称为类的属性或成员变量;类中的函数称为类的方法或者 成员函数。类的两种定义方式:1. 声明和定义全部放在类体中,需注意:成员函数如果在类中定义,编译器可能会将其当成内 联函数处理。

2025-06-08 14:55:26 1301

原创 C++继承的详细讲解

延续上面的例子,假设你的父亲设立了三种财产,第一种就是他会直接给你的财产,就是基类里的public成员变量与成员函数,这一部分财产你能自由支配,以你的名义给别人或者自己用都行。第三种就不是父亲给你的财产,假如说你的父亲立了一个遗嘱要求自己离开人世后,账户上的五千万捐赠给福利院,而这一部分财产是收到法律保护你无法使用或者赠与他人,这就是基类里。第二种就像是父亲的公司交给你来打理,这一部分财产你可以自己使用但是无法交给别人,这就是基类里的。派生类的构造函数必须调用基类的构造函数初始化基类的那一部分成员。

2025-06-08 14:55:19 763

原创 string类(详解)

npos这个值是一个静态成员变量后面还有一个-1的缺省值,很多人可能好奇为什么缺省值给-1大家别忘了这是一个无符号类型无符号类型-1就是整型的最大值。标准的字符串类提供了对此类对象的支持,其接口类似于标准字符容器的接口,但添加了专门用于操作 单字节字符字符串的设计特性。在改变元素个数时,如果是将元素个数增多,可能会改变底层容量的大 小,如果是将元素个数减少,底层空间总大小不变。系列的库函数, 但是这些库函数与字符串是分离开的,不太符合OOP。个字符数组的固定空间,不需要通过堆创建,效率高。

2025-06-07 19:13:59 1283

原创 C语言:数据的存储

【代码】C语言:数据的存储。

2025-06-07 19:13:52 17425 3

原创 找只出现了一次的数字

【代码】找只出现了一次的数字。

2025-06-06 12:17:53 354

原创 模拟实现strncpy

【代码】模拟实现strncpy。

2025-06-06 12:17:48 180

原创 Linux环境基础开发工具使用

在Linux下安装软件一个通常的办法是下载到程序的源代码并进行编译得到可执行程序但是这样太麻烦了于是有些人把一些常用的软件提前编译好做成软件包可以理解成windows上的安 装程序)放在一个服务器上通过包管理器可以很方便的获取到这个编译好的软件包直接进行安装. 软件包和软件包管理器,就好比"App"和应用商店这样的关系是Linux下非常常用的一种包管理器主要应用在Fedora, RedHat, Centos等发行版上。

2025-06-05 12:13:04 5606 2

原创 map和set的应用

1. set是按照一定次序存储元素的容器2.在set中,元素的value也标识它(value就是key,类型为T),并且每个value必须是唯一的。set中的元素不能在容器中修改元素总是const),但是可以从容器中插入或删除它们。3.在内部,set中的元素总是按照其内部比较对象类型比较所指示的特定严格弱排序准则进行排序。4. set容器通过key访问单个元素的速度通常比容器慢,但它们允许根据顺序对子集进行直接迭代。5. set。

2025-06-05 12:12:51 986

原创 C++入门(详解)

定义命名空间,需要使用到namespace关键字,后面跟命名空间的名字,然后接一对{}即可,{} 中即为命名空间的成员。//这里注意test是这个命名空间域的名字//这里的名字最好带有区分意义,因为以后大家做大型项目的时候,这个名字能帮助你和别人区分这是谁写的代码。//1.命名空间域的定义//命名空间域中可以定义类型,变量,函数,结构体等等int val;//2.命名空间可以嵌套int a = 1;int b = 2;int c = 3;int d = 4;

2025-06-04 11:35:07 4124

原创 C++模板进阶

一个程序(项目)由若干个源文件共同实现,而每个源文件单独编译生成目标文件,最后将所有目标文件链接起来形成单一的可执行文件的过程称为分离编译模式。通过观察上述程序的结果发现,对于日期对象可以直接排序,并且结果是正确的。该种实现简单明了,代码的可读性高,容易书写,因为对于一些参数类型复杂的函数模板,特化时特别给出,因此函数模板不建议特化。偏特化并不仅仅是指特化部分参数,而是针对模板参数更进一步的条件限制所设计出来的一个特化版本。,需要特殊处理,比如:实现了一个专门用来进行小于比较的函数模板。

2025-06-04 11:32:53 1209

原创 二叉搜索树(C++)

问题:如果退化成单支树,二叉搜索树的性能就失去了。个结点的二叉搜索树,若每个元素查找的概率相等,则二叉搜索树平均查找长度是结点在二。在二叉搜索树中检索该单词是否存在,存在则拼写正确,不存在则拼写错误。插入和删除操作都必须先查找,查找效率代表了二叉搜索树中各个操作的性能。、从根开始比较,查找,比根大则往右边走查找,比根小则往左边走查找。、最多查找高度次,走到到空,还没找到,这个值不存在。叉搜索树的深度的函数,即结点越深,则比较次数越多。,统计成功后,给定单词就可快速找到其出现的次数,,构建一棵二叉搜索树。

2025-06-03 08:53:52 631

原创 C/C++内存管理(详解)

【本节目标】1. C/C++内存分布2. C++中动态内存管理3. operator new与operator delete函数 4. new和delete的实现原理 5. 定位new表达式(placement-new) 这里不用传参是因为它是默认构造函数,如果不是默认构造函数该如何传参呢? 这里还和之前一样,有默认构造函数的情况下如果有参数,就以传参的值初始化,如果没有,就按缺省值来。同样这里也支持隐式类型转换。 注意:在申请自定义类型的空间时,new会调用构造函数,delet

2025-06-03 08:53:41 2698 2

原创 list类的详细讲解

因此反向迭 代器的实现可以借助正向迭代器,即:反向迭代器内部可以包含一个正向迭代器,对正向迭代器的接口进行 包装即可。的底层是双向链表结构,双向链表中每个元素存储在互不相关的独立节点中,在节点中通过指针指向 其前一个元素和后一个元素。中的接口比较多,此处类似,只需要掌握如何正确的使用,然后再去深入研究背后的原理,已达到可扩展 的能力。的底层结构以及其接口的含义,通过上面的学习,这些内容已基本掌握,现 在我们来模拟实现list。最大的缺陷是不支持任意位置的随机访问,比如:要访问。个元素,必须从已知的位置。

2025-06-02 16:56:01 2129

原创 初识C语言

C语言是一门通用计算机编程语言,广泛应用于底层开发。C语言的设计目标是提供一种能以简易的方式编译、处理低级存储器、产生少量的机器码以及不需要任何运行环境支持便能运行的编程语言。尽管C语言提供了许多低级处理的功能,但仍然保持着良好跨平台的特性,以一个标准规格写出的C语言程序可在许多电脑平台上进行编译,甚至包含一些嵌入式处理器(单片机或称MCU)以及超级电脑等作业平台。二十世纪八十年代,为了避免各开发厂商用的C语言语法产生差异,由美国国家标准局为C语言制。

2025-06-01 17:38:54 3085 2

原创 vector的详细讲解

就时间而言,这是 一个相对代价高的任务,因为每当一个新的元素加入到容器的时候,vector。但是无论如何,重新分配都应该是 对数增长的间隔大小,以至于在末尾插入一个元素的时候是在常数时间的复杂度完成的。既高效又不会出错,但如果拷贝的是自定义类型元素,并且自 定义类型元素中涉及到资源管理时,就会出错,因为memcpy。但是又不像数组,它的大小是可以动态改变的,而且它的大小会被容器自 动处理。位置之后的元素会往前搬移,没有导致底层空间的改变,理论上讲迭代 器不应该会失效,但是:如果pos。

2025-06-01 17:38:46 1924

原创 C++模板初阶

这并不是调用了模板函数,模板是不能够调用的,这里是编译器通过函数模板自动生成两个函数供我们调用。大家都知道,瓦特改良蒸汽机,人类开始了工业革命,解放了生产力。本质是什么,重复的工作交给了机器去完成。重载的函数仅仅是类型不同,代码复用率比较低,只要有新类型出现时,就需要用户自己增加对应的函。如果类型不匹配,编译器会尝试进行隐式类型转换,如果无法转换成功编译器将会报错。巧的是前人早已将树栽好,我们只需在此乘凉。代码的可维护性比较低,一个出错可能所有的重载均出错。,对于字符类型也是如此。,对于模板函数的使用,

2025-05-31 15:48:10 1633

原创 C++多态的详细讲解

如果此时我们不重写Student类的析构函数就会发生内存泄漏,因为delete会调用delete对象的析构函数和operator delete(),而没重写时delete调用的都是父类的析构函数这时就会发生内存泄漏,因为指针ptr指向的空间没有释放。虚函数的继承是一种接口继承,派生类继承的是基类虚函数的接口,目的是为了重写,达成。需要注意的是在单继承和多继承关系中,下面我们去关注的是派生类对象的虚表模型,因为基类。普通函数的继承是一种实现继承,派生类继承了基类函数,可以使用函数,继承的是函数的实。

2025-05-30 12:03:04 2285

原创 类和对象(下篇)(详解)

4. 成员变量在类中声明次序就是其在初始化列表中的初始化顺序,与其在初始化列表中的先后次序无关,各位可以想一下下面代码会有什么问题。

2025-05-28 12:06:27 1374

原创 C语言文件操作

每当打开一个文件的时候,系统会根据文件的情况自动创建一个FILE结构的变量,并填充其中的信息,使用者不必关 心细节。如有整数10000,如果以ASCII码的形式输出到磁盘,则磁盘中占用5个字节(每个字符一个字节),而二进制形式输 出,则在磁盘上只占4个字节(VS2013测试)。在编写程序的时候,在打开文件的同时,都会返回一个FILE*的指针变量指向该文件,也相当于建立了指针和文件的 关系。文件的内容不一定是程序,而是程序运行时读写的数据,比如程序运行需要从中读取数据的文件,或者输出内 容的文件。

2025-05-27 09:48:01 3967

原创 通讯录(动态内存)

【代码】通讯录(动态内存)

2025-05-16 12:05:53 258

原创 动态内存管理

一.为什么存在动态内存分配。二.动态内存函数的介绍。

2025-05-16 12:05:46 7376 1

原创 C语言:位段

1.位段的成员可以是intunsignedintsignedint或者是char(属于整形家族)类型。2.位段的空间上是按照需要以4个字节(类型int)或者1个字节(char)的方式来开辟的。因此由于上题结构体类型内全是整型,位段分配就是4个字节,4个字节分配的。下面将以画图形式展现。3.位段涉及很多不确定因素,位段是不跨平台的,注重可移植的程序应该避免使用位段。

2025-04-26 13:58:06 2856 2

原创 C语言程序环境和预处理详解

第1种是翻译环境,在这个环境中源代码被转换为可执行的机器指令。第2种是执行环境,它用于实际执行代码。在ANSIC的任何一种实现中,存在两个不同的环境。

2025-04-26 13:57:59 1948

原创 Linux下基本指令

目录的可执行权限是表示你可否在目录下执行命令。如果目录没有-x权限,则无法对目录执行任何命令,甚至无法cd 进入目, 即使目录仍然有-r 读权限(这 个地方很容易犯错,认为有读权限就可以进入目录读取目录下的文件)而如果目录具有-x权限,但没有-r权限,则用户可以执行命令,可以cd进入目录。但由于没有目录的读 权限所以在目录下,即使可以执行ls命令,但仍然没有权限读出目录下的文档。

2025-04-19 11:37:50 1931

原创 喝汽水问题:1瓶汽水1元,2个空瓶可以换一瓶汽水,给20元,可以喝多少汽水

【代码】喝汽水问题:1瓶汽水1元,2个空瓶可以换一瓶汽水,给20元,可以喝多少汽水。

2025-04-14 17:37:42 504

原创 模拟实现strstr

【代码】模拟实现strstr。

2025-04-14 17:37:36 363

原创 C语言实现通讯录

【代码】C语言实现通讯录。

2025-04-13 18:34:38 330

原创 //KiKi知道了什么是质数(只能被1和他自身整除的数),他现在想知道所有三位整数中,有多少个质数。

【代码】//KiKi知道了什么是质数(只能被1和他自身整除的数),他现在想知道所有三位整数中,有多少个质数。

2025-04-11 12:17:49 200

原创 STL简介(了解)

在惠普实验室完成的原始版本,本着开源精神,他们声明允许任何人任意运用、拷贝、修改、传播、商业使用这些代码,无需付费。采用,可移植性好,可公开、修改甚至贩卖,从命名风格和编程 风格上看,阅读性非常高。且锁的粒度是比较大的。采用,不能公开或修改,缺陷:可读性比较低,符号命名比较怪异。极度的追求效率,导致内部比较复杂。比如类型萃取,迭代器萃取。这样会生成多份代码,当然这是模板语法本身导致的。采用,不能公开或修改,可读性一般。的使用会有代码膨胀的问题,比如使用。,不仅是一个可复用的组件库,而且。

2025-04-11 12:17:43 366

原创 写一个宏,可以将一个整数的二进制位的奇数位和偶数位交换。

【代码】写一个宏,可以将一个整数的二进制位的奇数位和偶数位交换。

2025-04-09 12:22:49 290 1

原创 模拟实现memmove

【代码】模拟实现memmove。

2025-04-04 14:30:59 269

原创 C语言:实现单链表

【代码】C语言:实现单链表。

2025-04-03 11:02:07 268

原创 求两个数二进制中不同位的个数

【代码】求两个数二进制中不同位的个数。

2025-04-02 12:11:22 160

原创 打印水仙花数

【代码】打印水仙花数。

2025-04-02 12:10:54 468

原创 输入一个整数数组,实现一个函数,来调整该数组中数字的顺序使得数组中所有的奇数位于数组的前半部分,所有偶数位于数组的后半部分。

【代码】输入一个整数数组,实现一个函数,来调整该数组中数字的顺序使得数组中所有的奇数位于数组的前半部分,所有偶数位于数组的后半部分。

2025-03-29 15:05:06 227

原创 判断编译器是什么存储

【代码】判断编译器是什么存储。

2025-03-29 15:04:59 275

空空如也

空空如也

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

TA关注的人

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