自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

小何代码咖啡馆

小coder的学习记录

  • 博客(88)
  • 收藏
  • 关注

原创 C++中的STL——queue类的基本使用

队列是一种容器适配器,专门用于在FIFO上下文(先进先出)中操作,其中从容器一端插入元素,另一端提取元素。队列作为容器适配器实现,容器适配器即将特定容器类封装作为其底层容器类,queue提供一组特定的成员函数来访问其元素。元素从队尾入队列,从队头出队列。底层容器可以是标准容器类模板之一,也可以是其他专门设计的容器类。标准容器类deque和list满足了这些要求。默认情况下,如果没有为queue实例化指定容器类,则使用标准容器deque。

2024-04-26 19:34:13 555

原创 正整数的性质:和与根

/ 记录各位之和num /= 10;// 获取下一个高位数值相比较于数字和来说,数字根是数值的每一位相加求和直到和结果为1位数,例如6278的数字根计算方式为6+2+7+8=23->2+3=5,所以6278的数字根为5求一个数值的数字根有两种方法循环求和// 获取最低位和tmp /= 10;tmp = sum;sum = 0;sum = tmp;数学计算(去9法)

2024-04-24 13:43:29 623

原创 C++中的list类模拟实现

但是上面的代码没有通过编译,原因在于模板参数,当模板参数在函数模板或者类模板中,编译器开始编译时,可以实现替换,从而生成对应的函数或者类。,此时实现的效果是,迭代器指向的内容可以修改,但是指向不可以修改,而需要的const迭代器实现的效果是迭代器指向的内容不可以修改,但是指向可以修改,即。函数两个有不同以外,其余均没有不同,而这两个版本中的这两个函数只是返回值类型不同,那么可以考虑通过模板单独控制这两个返回值类型,现在将类型引用。对象的转换问题,为了更方便解决,采取上面的第一种解决方案,如果直接是。

2024-04-23 23:25:03 1056

原创 C++中的STL——stack类的基本使用

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

2024-04-22 22:32:25 469

原创 CSS中的圆角和阴影

在 CSS3 中,新增了圆角边框样式,这样我们的盒子就可以变圆角了。(必需值)水平阴影(horizontal shadow),可以为负值。(必需值)水平阴影(horizontal shadow),可以为负值。(必需值)垂直阴影(vertical shadow),可以为负值。(必需值)垂直阴影(vertical shadow),可以为负值。(可选值)将外(盒子的背面)阴影改为内(盒子之上)阴影。CSS3 中新增了盒子阴影,可以使用。属性为盒子添加阴影。(可选值)阴影模糊程度。(可选值)阴影模糊程度。

2024-04-21 10:40:16 651

原创 CSS中的盒子模型

在网页布局时,主要关注的就是如何利用CSS摆放盒子先准备好相关的网页元素,网页元素基本都是盒子利用 CSS 设置好盒子样式,然后摆放到相应位置往盒子里面装内容。

2024-04-19 22:40:29 1516

原创 CSS的三大特性

标签选择器中设置了字体颜色和字体系列,所以字体颜色会以第二个选择器中的为主,但是字体系列不会被覆盖,因为第一个选择器中没有字体系列属性。当为相同选择器设置相同类型的样式,此时一个样式就会覆盖(层叠)另一个冲突的样式。子标签会继承父标签的某些样式,如文本颜色和字号。恰当地使用继承可以简化代码,可以降低 CSS 样式的复杂性。权重叠加:如果是复合选择器,则会有权重叠加,需要计算权重,计算方式即为对应为相加不进位。对于有多种样式的情况下,则只会覆盖相同的样式,不会影响没有重复的样式,例如下面的代码。

2024-04-19 09:44:21 1213

原创 CSS背景设置

通过 CSS 背景属性,可以给页面元素添加背景样式。背景属性可以设置背景颜色、背景图片、背景平铺、背景图片位置、背景图像固定等。

2024-04-18 20:23:42 800

原创 CSS显示模式

元素显示模式就是元素(标签)以什么方式进行显示,比如自己占一行,比如一行可以放多个。当网页的标签非常多,在不同地方会用到不同类型的标签,了解他们的特点可以更好的布局网页。

2024-04-18 15:26:45 1006

原创 CSS复合选择器

后代选择器又称为包含选择器,可以选择父元素里面子元素。复合选择器是由两个或多个基础选择器,通过不同的方式组合而成的,可以更准确、更高效的选择目标元素(标签)伪类选择器用于向某些选择器添加特殊的效果,比如给链接添加特殊效果,或选择第1个,第n个元素。(逗号可以理解为和的意思)连接而成,任何形式的选择器都可以作为并集选择器的一部分。并集选择器可以选择多组标签, 同时为他们定义相同的样式,通常用于集体声明。不同于后代选择器,子选择器只会选择其直接后代,而不会选择间接的后代。伪类选择器用于选取获得焦点的表单元素。

2024-04-18 10:40:21 1072

原创 Emmet表达式

Emmet语法的前身是Zen coding,它使用缩写,来提高HTML的编写速度,VScode内部已经集成该语法。

2024-04-18 09:04:59 355

原创 CSS文本属性与字体属性

对于占用一整行的标签来说,其区域相当于一个盒子,而文本对齐属性实际改变的是文字在盒子中的位置,但是并不改变盒子本身的大小,对于只占用当前位置的标签来说,居中对齐效果需要。属性时,必须按上面语法格式中的顺序书写,不能更换顺序,并且各个属性间以空格隔开 不需要设置的属性可以省略(浏览器取默认值),但必须保留。) 1 个文字的大小, 如果当前元素没有设置大小,则会按照父元素的 1 个文字大小。在CSS中,一共有100-900九个值,400等同于。一般考虑将粗体改为非粗体,例如将粗体的标题改为非粗体。

2024-04-17 20:19:25 769

原创 CSS简介与CSS选择器

CSS 是层叠样式表 ( Cascading Style Sheets ) 的简称,有时我们也会称之为 CSS 样式表或级联样式表。CSS 是也是一种标记语言,CSS 主要用于设置 HTML 页面中的文本内容(字体、大小、对齐方式等)、图片的外形(宽高、边框样式、边距等)以及版面的布局和外观显示样式。CSS 让我们的网页更加丰富多彩,布局更加灵活自如。简单理解:CSS 可以美化 HTML , 让 HTML 更漂亮, 让页面布局更简单。

2024-04-17 11:13:27 1001

原创 HTML表格标签、列表标签和表单标签

</dl>标签用于定义描述列表(或定义列表),该标签会与<dt></dt>(定义项目/名字)和<dd></dd>(描述每一个项目/名字)一起使用。<dl>-- 列表名称 --><dt></dt>-- 列表描述 --><dd></dd><title>自定义列表</title>列表名称

2024-04-16 19:32:53 598

原创 HTML图片标签和超链接标签

在HTML中,在两个超链接标签中可以使用文本作为显示超链接的载体(即点击文本跳转),也可以使用图片作为超链接的载体(即点击照片跳转),如果不加文本也不加其他内容,则不显示超链接。在HTML中,当图片因某种错误(一般是图片路径出错)导致无法被解析时,可以使用替换文本属性alt用文本代替于错误图片的位置显示在网页上。属性可以指定跳转的形式,包括在当前页面查看超链接和创建新页面查看超链接。在HTML中,当需要修改图片的宽度和高度时,可以使用到。在中,需要为图片添加边框时,可以使用。

2024-04-16 19:26:54 784

原创 HTML中div/span标签、音频标签、视频标签与特殊字符

在 HTML 页面中,一些特殊的符号很难或者不方便直接使用,此时我们就可以使用下面的字符来替代。是没有语义的,可以将两个标签当做两个盒子,里面可以容纳内容。标签用来布局,但是现在一行只能放一个。在HTML中,音频标签有下面的三个属性。标签用来布局,一行上可以多个。注意每一个字符代码末尾都需要分号。在HTML中,可以使用。标签为网页添加音频元素。在HTML中,可以使用。标签为网页添加视频元素。其余字符代码使用类似。

2024-04-16 19:23:58 524 1

原创 HTML段落标签、换行标签、文本格式化标签与水平线标签

在四个格式化标签中虽然每一类的第一个标签和第二个标签实现的效果相同,但是为了更加强调文本效果,提高代码可读性,推荐用第一种标签。在网页中,要把文字有条理地显示出来,就需要将这些文字分段显示。在 HTML 标签中,在HTML中,可以使用下面的标签实现对应的属性,并且这些标签可以嵌套使用。标签用于定义段落,它可以将整个网页分为若干个段落。标签可以在网页上实现水平分割线的效果。注意,水平分割线标签为单标签。为文本分段可以使用段落标签。包裹需要放在一段的文字。标签表示换行,也可以用。在HTML中,常见用。

2024-04-16 19:19:57 464

原创 HTML注释标签与标题标签

如果需要在 HTML 文档中添加一些便于阅读和理解但又不需要显示在页面中的注释文字,就需要使用注释标签。注释不会显示在网页界面上,目的是提高代码的可读性。在浏览器开发工具中查看源代码时可以看到注释,下面是在Edge浏览器中的显示。在浏览器中需要查看代码注释可以使用开发者工具查看源代码看到注释内容。在HTML中有6个标题标签,从h1~h6,数字越大,则字体越小。在HTML中,一个标题标签包裹的内容独占一行。

2024-04-16 19:18:38 122

原创 HTML语言及标签基本介绍

HTML 指的是超文本标记语言 (Hyper Text Markup Language) ,它是用来描述网页的一种语言HTML 不是一种编程语言,而是一种标记语言 (markup language)📌标记语言是一套标记标签 (markup tag)

2024-04-16 19:15:51 222

原创 网页基本结构

网站是指在因特网上根据一定的规则,使用 HTML 等制作的用于展示特定内容相关的网页集合。

2024-04-16 19:14:10 344

原创 C++中的STL——list类的基本使用

list是可以在常数范围内在任意位置进行插入和删除的序列式容器,并且该容器可以前后双向迭代。list的底层是双向链表结构,双向链表中每个元素存储在互不相关的独立节点中,在节点中通过指针指向其前一个元素和后一个元素。list与forward_list非常相似:最主要的不同在于forward_list是单链表,只能朝前迭代,已让其更简单高效。与其他的序列式容器相比(array,vector,deque),list通常在任意位置进行插入、移除元素的执行效率更好。

2024-04-14 13:47:32 816

原创 C++中的vector类模拟实现

涉及到一个赋值运算,而string类本身已经重载过赋值运算符,所以是深拷贝,但是模拟类还没有实现赋值运算符的重载,所以在这里赋值时实际上还是调用的编译器默认的赋值运算符重载函数,依旧是浅拷贝,导致拷贝的结果也就是新对象装着被拷贝对象的旧内容,所以需要实现赋值运算符重载函数。需要注意的是,设计初始化值时,不要直接使用值,而是使用匿名对象调用对应的构造函数,因为vector中存储的数据类型不一定时内置类型,也有可能是自定义类型。有了迭代器区间的构造函数后,使用根据个数的构造函数将会出问题,下面是测试报错信息。

2024-04-09 14:40:51 1009

原创 小小算式(1 + 2) * (3 + 4)背后的大道理

如果有多个操作符,操作符置于第二个操作数的后面,所以常规中缀记法的“3 - 4 + 5”在逆波兰记法中写作“3 4 - 5 + ”:先3减去4,再加上5。在复杂的表达式中,操作符仍然在操作数的前面,但操作数可能是包含操作符的平凡表达式。对于逆波兰表达式一般用栈的数据结构解决,当表达式中的字符为操作数时,操作数入栈,当表达式中的字符为操作符时,依次弹出两个操作数,进行对应操作符的运算。的操作符,它的操作数写法仍然是常规顺序,如,波兰记法“/ 6 3”的逆波兰记法是“6 3 /”而不是“3 6 /”;

2024-04-08 13:52:00 735 2

原创 C++中的STL——vector类的基本使用

vector是表示可变大小数组的序列容器。就像数组一样,vector也采用连续存储空间来存储元素。也就是意味着可以采用下标对vector的元素进行访问,和数组一样高效。但是又不像数组,它的大小是可以动态改变的,而且它的大小会被容器自动处理。本质讲,vector使用动态分配数组来存储它的元素。当新元素插入时候,这个数组需要被重新分配大小为了增加存储空间。其做法是,分配一个新的数组,然后将全部元素移到这个数组。

2024-04-05 23:05:29 772

原创 C++中的string类模拟实现

不论是哪一种情况,先以目标字符串空间为基础开辟新的空间,再将源字符串中的内容直接拷贝到新的空间,这一步可以确保如果空间开辟失败不会影响源字符串中的内容,释放源字符串的空间,接着使源字符串的指针指向新的空间,在设计string类的拷贝构造函数需要考虑到空间开辟的问题,因为是拷贝某一个对象中的内容,所以可以考虑使用该对象的。对于下标引用操作符来说,只需要返回当前下标对应位置的字符即可,但是需要注意的是要判断传入的位置是否合法。对于析构函数来说,只需要释放开辟的空间即可,因为使用的是。

2024-03-31 16:30:46 606

原创 C++中的STL简介与string类

STL(standard template libaray-标准模板库):是C++标准库的重要组成部分,不仅是一个可复用的组件库,而且是一个包罗数据结构与算法的软件框架。

2024-03-29 22:43:47 1105

原创 C++动态内存管理

在C语言中,使用进行动态内存空间的开辟,但是这三种方式中只有calloc会对数据区域进行初始化,并且初始化值为0,并且使用free宏对动态分配的空间进行释放int main()//此处不需要释放ptr原来指向的空间ptr = tmp;free(ptr);free(ptr1);return 0;在C++中,仍然可以使用进行动态内存分配和free进行空间释放,但是更推荐使用new进行动态内存分配以及delete进行空间释放,所以上面的代码可以转化为下面的代码int main()

2024-03-25 20:27:47 1176

原创 C++模版(基础)

在C语言中,当需要交换两个变量的数据时需要考虑到不同类型,例如下面的代码//交换int类型数据//交换double类型的数据int main()return 0;输出结果:在上面的C语言代码中,当需要交换int类型的数据时需要int类型交换函数,需要double类型的数据时需要double类型的交换函数,但是这两个函数除了类型不同以外其他代码都一样,增加了工作量,并且因为C语言不支持函数重载,所以两个交换函数的函数名不能相同。

2024-03-25 13:33:02 1667

原创 C++中拷贝对象时编译器做出的一些优化

在上面的代码中,使用整型2创建了一个匿名对象,常规步骤为:调用构造函数使用整型2创建匿名对象,接着调用拷贝构造函数将匿名对象中的内容拷贝给形式参数,但是编译器优化为直接使用整型2为形式参数初始化。时,常规的步骤为:调用构造函数用整型1初始化一个临时对象,再调用拷贝构造函数将临时对象中的内容拷贝给形参对象,但是此处编译器会对其进行优化为直接调用构造函数,用整型1初始化形参对象。函数中会再次调用构造函数创建一个对象,(注意中间有一个过程为:调用拷贝构造将返回对象拷贝到临时对象中,再调用析构函数销毁局部对象。

2024-03-24 19:53:32 1118

原创 C++中类和对象其他内容

当需要统计一个类创建了多少个对象时,第一反应是创建一个全局变量,当每一次调用构造函数或者拷贝构造函数时,就让其进行+1操作,但是这个思路的问题是该全局变量不仅是在类中可以访问,也可以在类外访问,此时如果在类外改变了该变量的值,那么此时的计数不一定准确,如果直接放置到类内作为类的成员变量,那么每一个类对象在创建时都会为这个成员变量分配独立的空间,那么每一个类对象的计数器变量都只为1,并没有达到计数的效果。

2024-03-24 15:54:08 1027

原创 C语言基础练习——Day16

声明:本篇是C语言基础练习的最后一篇。

2024-03-23 17:16:12 590

原创 C++默认构造函数(二)

在C++中,为了增强代码的可读性引入了运算符重载,运算符重载是具有特殊函数名的函数,也具有其返回值类型,函数名字以及参数列表,其返回值类型与参数列表与普通的函数类似class Dateprivate:int _year;int _month;int _day;//自定义类型无法使用内置的关系运算符进行比较return 0;

2024-03-23 16:23:24 896

原创 C语言基础练习——Day15

本题可以采用暴力求解找到峰值,但是题目规定使用O(logN)的时间复杂度,而暴力求解的时间复杂度为O(N),所以考虑采用二分查找的思想或者递归。指针同时指向同一个位置时递归结束返回当前下标,当递归结束返回后比较两个下标对应数值的大小,返回较大值的下标,具体过程如下:(当前区间为。C选项,指针占几个字节要看平台,64位环境下8个字节,32位环境下4个字节,其余选项正确。为元素类型是指针类型数组,并且第一个元素为二维数组第二行的第一个元素的地址,即。属于字符数组的数组名,相当于数组的首地址,A正确。

2024-03-22 11:25:35 762

原创 C语言基础练习——Day14

本题可以可以将问题拆解为两个部分,第一个部分处理猜中的部分,需要注意的是如果给的样例中有猜中的部分时,避免在后面的伪猜中的比较中再与猜测数组进行一次遍历导致增加伪猜中的次数需要将比较完的两个数组中的数值改为RYGB以外的字符,接着是第二个部分处理伪猜中的部分,本部分和上面的处理方式相同,可以考虑加。本题可以考虑使用双指针遍历数组算和的思路,第一个指针指向第一个元素,第二个指针指向后一个元素,当第二个指针遍历完数组后再更新第一个指针,直到找出和为。为指针数组名,数组的每一个元素为指针类型,所以。

2024-03-21 15:17:46 816

原创 C++默认成员函数(一)

在C语言中,如果要给一个整体初始化时,需要使用一个函数,并且需要自行调用int year;int month;int day;}Date;//初始化函数int main()return 0;输出结果:2024/3/20在C++中也可以像C语言一样将初始化函数封装到类中class Dateprivate:int _day;int _year;int _month;d.Init();

2024-03-21 09:46:33 1406

原创 C语言基础练习——Day13

B选项,可以求出两个数据元素储存位置之间的相隔同数据类型的元素个数,C选项,赋值,没问题,D选项,判断两指针是否相同。通过对题目的分析可以发现本题和斐波那契数列的思路基本一致,所以可以直接使用斐波那契数列求解的思想。A选项的x是指针,赋值时使用a不合适,C选项在赋值时a变量还没定义,D选项中的x不是指针。5、以下选项中,对基本类型相同的两个指针变量不能进行运算的运算符是。表示改变从右向左的第一个0为1,直到变成全1的时候。3、下面有关空指针和未初始化指针,说法错误的是。的指针,其中哪一个是正确的。

2024-03-20 22:16:09 813

原创 C语言基础练习——Day12

接着是输出,因为当前二维数组每一行存储的是一个单词,只要是有字母的位置就不会停止读取,那么对初始化全部为0的数组来说,只需要反向输出即可,但是输出时需要注意是使用%c还是%s,如果用。的特点,在读取字符串时会跳过空白字符,而本题中题目说明了构成单词的字符只有大小写字母,所以在输入时需要限制输入的字符集合在a-z以及A-Z,即。,而因为scanf的返回值是实际成功读取到的字符的个数,故当其返回值非0时,说明此时输入了单词,输入完一个单词后换到二维数组的下一行即可。的值按1、2、0循环,可推算出。

2024-03-19 15:07:08 965

原创 C++类与对象

在C++中,使用下面的语法进行类的定义//成员变量//实现方法//注意不要遗忘分号在类的定义语法中,class为类定义的关键字,className为类名,{}中的内容为类的主体类的内容一般称作成员,而类中的变量一般成为成员变量,类中的方法一般称为方法或者成员函数📌需要注意的是,成员变量可以出现在成员函数的上方也可以出现在成员函数的下方,因为编译器在寻找成员变量时是将类当做一个整体看待,此时不论是在成员函数的上方还是下方都能寻找到需要的成员变量。

2024-03-19 13:39:37 1342

原创 C语言基础练习——Day11

本题考虑遍历数组,因为数组中只会有0和1的存在,故当遇到数组值为1时,记录个数,当数组值为0时先将原来个数放入变量中,再将计数器归零,接着向后遍历数组,注意遍历结束后需要额外判断一次当前计数器中的数值是否比最后答案中的值大,如果大则需要更新最后的答案。本题可以考虑两层for循环,第一层for循环用于生成2到num的数值,第二层for循环用于生成除数,如果生成的数值除以除数为0则进行加和,最后在外层循环判断总和是否等于生成的数值,若等于则计数器加1。,即符号位为1,其他为0,即-2147483648,

2024-03-18 16:41:30 876

原创 C语言向C++过渡的基础知识(三)

类型难于拼写含义不明确导致容易出错例如下面的代码中int main()std::map<std::string, std::string> m{ { "apple", "苹果" }, { "orange","橙子" },{"pear","梨"} };while (it!可以用typedef来处理上面的问题,但是typedef也有别的问题int main()

2024-03-18 09:53:27 1030

空空如也

空空如也

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

TA关注的人

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