自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 qt学习1

【代码】qt学习1。

2025-08-19 16:37:52 103

原创 C++智能指针解析

因为堆区的内存一定要手工释放,否则会发生内存泄漏。

2025-07-25 17:57:33 680

原创 现代C++的一般编程规范

捕获变量] (参数列表) 可选限定符->返回类型{//函数代码int main()int x=7;下面我们直接将lambda表达式作为实际参数传入int main()});float y;}p{x,y};在这里,我们虽然改变了y的值,但是这两个函数的输出是一模一样的int main()int x=7;y+=1.5;

2025-07-24 23:44:48 663

原创 常用的排序算法

功能描述:对容器内元素进行排序函数原型。

2025-07-22 18:10:51 282

原创 STL常用算法

功能描述:查找指定的元素,找到返回元素的迭代器,找不到返回结束迭代器end()总结:二分查找法查找效率很高,值得注意的是查找的容器必须是有序序列。功能描述:搬运容器到另一个容器中。//beg2 目标容器开始迭代器。//_func函数或者函数对象。//beg1 源容器开始迭代器。//end1 源容器结束迭代器。//_func函数或者函数对象。功能描述:查找指定元素是否存在。//遍历算法 遍历容器元素。功能描述:查找相邻重复元素。功能描述:按条件查找元素。//beg开始迭代器。//end结束迭代器。

2025-07-22 16:39:37 252

原创 STL内建函数对象

这个在实际开发中基本上用不到,因此可以选择性的忽略。功能描述:实现关系对比。

2025-07-22 14:00:36 210

原创 STL------函数对象

仿函数写法非常灵活,没有一个固定的写法。本质:函数对象是一个类,不是一个函数。

2025-07-22 12:54:40 164

原创 map/multimap容器

map值与multimap值的。

2025-07-22 12:22:05 415

原创 Set/MultiSet容器

简介:所有元素都会在插入时自动被排序本质:set/multiset属于关联式容器,底层结构是二叉树实现。

2025-07-21 22:45:19 315

原创 list容器

功能:将数据进行链式存储链表:list是一种物理存储单元上非连续的存储结构,数据元素的逻辑顺醋是通过链表中的指针链接实现的链表的组成:链表由一系列节点组成一个是存储元素的数据域,一个是存储下一个节点位置的指针域STL中的链表是一个双向循环链表缺点就是:容器的遍历速度没有数组快,占用的空间会比数组要大由于链表的存储方式并不是连续的内存空间,因此链表list中的迭代器只支持前移和后移,属于list有一个重要的性质,插入操作和删除操作都不会造成原有的list迭代器的实效,这在vector是不成立的。

2025-07-21 19:44:18 364

原创 quene容器

概念:Quene是一种先进先出(First In First Out,FIFO)的数据结构,它有两个出口。队列中只有队头和队尾才可以被外界使用,因此队列不允许有遍历行为。队列容器中允许从一端新增元素,从另一端移除元素。队列中进数据称为---入队 push。队列中出数据称为--出队 pop。判断队列是否为空 empty。返回队列大小 size。

2025-07-21 16:14:52 660

原创 stack容器

stack是一种先进后出(First In Last Out)的数据结构,它只有一个出口栈中只有顶端的元素才能被外界使用,因此栈不允许有遍历行为栈可以判断容器是否为空吗?可以empty栈可以返回其元素个数吗?可以 size,因为在入栈的时候我们可以对其进行计数。

2025-07-21 15:33:12 442

原创 C++中的deque容器

功能:双端数组,可以对头端进行插入和删除操作。

2025-07-21 15:09:12 351

原创 C++运算符重载

因此这里的基本运算符是不能直接作用在自定义类型上面的。因此我们的运算符重载是为了实现基本运算符运用在自定义的类上面,直接操作自定义类型,我们这里不能操作是因为我们这里没有写运算符重载。

2025-07-20 20:33:47 2002

原创 类模版的相关案例

也就是说我们这几个进行了深拷贝,还有有参构造,之后通过析构函数释放了它们的内存。因为我们并不知道里面有什么数据类型,因此我们需要将这些。首先我们在MyArray.hpp文件里面写入以下的代码。在数组类封装.cpp这个文件里面写入下面的代码。之后运行,我们可以得到以下的内容。数组类封装函数那里写。

2025-07-16 23:07:07 248

原创 C++类模版与友元

全局函数类外实现-需要提前让编译器知道全局函数的存在你看,其实一开始m_Name和m_Age是一个私有的属性,因为其前面有private关键字,因此前面加上friend,也就是友元的全局函数才能访问这个私有属性。

2025-07-14 15:06:35 292

原创 C++高级编程,类模版成员函数类外实现

问题:类模版中成员函数创建时机是在调用阶段,导致分文件编写时链接不到。

2025-07-13 23:49:38 332

原创 C++模版编程:类模版与继承

因为父类中的一些东西需要继承到子类中,父类中有的成员,子类中也必须有,但是子类也不是一个模版,因此一个子类对象到底占据多少个内存空间,怎么算?算不出来,是因为我确定不出来这个继承的这个东西到底占据了多大的空间,因此发生了继承的时候,我必须指明父类中的T 究竟是什么样的数据类型,才能继承该子类。这里的T1是obj的数据类型,他现在是一个整型int,这个T2给了父类,因此这个T2是m的数据类型,其中这个数据类型是char类型。总结:父类是一个类模版,子类在继承的时候需要指定出父类中T的数据类型。

2025-07-13 22:48:29 370

原创 C++类模版2

1.一共三种传入的类型 --直接显示对象的数据类型2.参数模版化 --将对象中的参数编程模版进行传递3.整个类模版化 --将这个对象类型 模版化进行传递因此最终其输出为这个。

2025-07-12 20:45:06 318

原创 C++类模版1

类模版与函数模版语法相似,在声明模版template后面加类,此类称为类模版。

2025-07-12 20:02:17 394

原创 C++模版编程 2

如果函数模版可以产生更好的匹配,优先调用函数模版。

2025-07-12 18:58:33 202

原创 C++高级编程 1

但是C++中的数据类型有很多种,总不能说一种数据类型写一个函数吧,那这样也太那个了,因此。建立一个通用函数,其函数返回值类型和形参类型可以不具体制定,用一个。typename --- 表示其后面的符号是一种数据类型,可以用。T --- 通用的数据类型,名称可以替换,通常为大写字母。模版就是一个通用的模具,大大提高复用性。template --- 声明创建模版。

2025-07-12 16:09:44 199

原创 C++面向对象入门

在刷题过程中面向对象使用的比较少,但是工程化开发中。面向对象却是很重要的内容,本节课我们借助一道题目学习 C++ 中面向对象的一些知识,你也可以使用简易的方法轻松的解决本道题目,但是我们更希望你对类和面向对象中的三大特性:封装、继承、多态面向对象中的三大特性:封装、继承、多态有更多的了解。

2025-07-12 00:00:17 515

原创 基本数据结构之队列

队列已经构建完毕,接下来需要接收数字m和m个整数的输入,表示取奶茶的操作,如果数字为1,表示有人取走了奶茶,即出队操作,如果数字为2,表示有人新加入了奶茶队列,即入队操作,这种“如果”的条件,需要使用if-else结构。创建一个队列和创建一个栈的写法是相似的,需要指定队列中元素的类型,不过这也意味着队列中的元素必须是相同的数据类型,下面的代码表示创建一个字符串类型的队列。队列,顾名思义,和排队的队列结构是类似的,在排队的过程中,想要加入队列,需要在队伍的最后一位()入队,想要离开队列,需要从队伍的第一位(

2025-07-11 17:21:10 360

原创 常见数据结构之栈

接下来接收m和m个整数的操作,表示对盘子的操作,如果数字为1,表示盘子被拿去清洗,即出栈操作,如果数字为2,表示有新的盘子加入到待清洗区域中,即入栈操作。栈的操作实际上和洗盘子的过程是类似的,洗盘子的过程中,会拿出待清洗的那一摞盘子的最顶端的那个盘子,清洗之后将其放在已清洗区域,这对于待清洗盘子来说是出栈,对于已清洗区域来说,是入栈,具体的过程可以看做下面的图片。输出共一行,为下一个该清洗的盘子编号。如果是操作 2,那么该行有两个数字,第一个数字 2 表示有未洗的盘子加入,第二个数字代表未洗的盘子编号。

2025-07-11 16:24:17 627

原创 数据结构之map

而pair<int,int>定义了kv也就是键值对的数据类型是pair,C++中的pair类型会将两个不同的值组合成一个单元,常用于存储键值对,创建pair的时候,也必须提供两个类型名,比如上面的pair对象,两个值的类型都是int,在使用时通过first和second成员来访问pair中的第一个和第二个元素,它的first成员存储键,而second成员存储值。的key值存储是无序的,底层实现为哈希表,查找速度更快,如果不需要排序而只是快速查找键对应的值,可以考虑使用。常量通常用大写字母表示。

2025-07-11 15:30:37 562 1

原创 数据结构之哈西表II

之前我们讲到,哈西表的主要作用是判断给定的整数是否存在于给定的数据中,哈西表使用的数据结构有数组,set集合,map映射。其中set创建一个集合的写法如下想要向集合中插入元素需要使用insert()方法想要往集合中删除元素需要使用erase方法find()方法用于查找特定元素是否存在于集合中,如果find()方法找到了要查找的元素,它会返回指向该元素的迭代器,如果未找到要查找的元素,它会返回一个指向集合的end()的迭代器,表示未找到。通过比较find()方法返回的迭代器是否等于。

2025-07-11 01:06:15 291

原创 常见数据结构之哈西表

给定一个只包含小写字母的字符串,统计字符串中每个字母出现的频率,并找出出现频率最高的字母,如果最高频率的字母有多个,输出字典序靠前的那个字母。包含多组测试数据,每组测试数据占一行。有多组输出,每组输出占一行。我们已经学习了数组、字符串、链表等数据结构,但是大家有没有发现,如果我们想要找到其中某个元素或者节点,需要从索引为0的位置或者表头开始,逐一进行比较,直到找到相等的位置或者末尾才会结束。那是否可以避免之前的比较,直接通过要查找的记录直接找到其存储位置呢?是有的,可以通过“哈希表”来实现,key。

2025-07-10 17:37:55 572

原创 常见的数据结构之链表3

请编写一个程序,实现以下链表操作:构建一个单向链表,链表中包含一组整数数据。1. 实现在链表的第 n 个位置插入一个元素,输出整个链表的所有元素。2. 实现删除链表的第 m 个位置的元素,输出整个链表的所有元素。要求:1. 使用自定义的链表数据结构。2. 提供一个 linkedList 类来管理链表,包含构建链表、插入元素、删除元素和输出链表元素的方法。

2025-07-09 23:33:16 1916

原创 Git学习第五天 分支工作流模型

Git分支管理中的一些工作流模型,所谓工作流模型,就是一些好的规范和流程,可以让我们的工作更高效,更有条理它将分支分成了五种类型,每种类型都有自己的用途。

2025-07-09 16:46:27 1684

原创 Git学习第五天:回退与Rebase(成为了大人才知道,彼此见面的每一面都可能是最后一面)

我们是在main分支上进行的合并操作,那么如果使用Rebase的话,是不是也必须要在main分支上执行呢,其实不是的,我们可以在任意分支上实行rebase操作,可以在dev分支上,也可以在main分支上,如果我们在dev分支上实行rebase操作的话,结果就是下图所示:dev分支的两次提交记录就会变基到main分支上,如果在main分支上执行的话,结果就是这样的,main分支的两次提交记录就会变基到dev分支的末尾共同之处就是执行rebase之后,最后的结果都是一条直线,但是中间的顺序会稍微有些不同。

2025-07-09 16:03:07 475

原创 常见的数据结构之链表2

当while循环结束后,如果cur指向null,说明输入的m已经超出了链表的长度,如果cur还是指向dummyNode说明没有进入到while循环,也就是m=0,这两种情况都是m为止不合法的情况。3. 在 main 函数中,创建一个包含一组整数数据的链表,然后输入 m,调用链表的方法输出第 m 个元素。构建一个单向链表,链表中包含一组整数数据,输出链表中的第 m 个元素(m 从 1 开始计数)。第一行包含两个整数 n 和 k,n 表示需要构建的链表的长度,k 代表输入的 m 的个数。

2025-07-09 14:12:26 262

原创 常用的数据结构之链表

在C++中如何定义链表结构呢,传统的定义变量的方式只能使用一种数据类型,无法处理这种既包涵数据域名,又包含指针域的复合结构,这就需要使用struct结构体,结构体是一种用户自定义的数据类型,比如想要定义一个Person的结构体。//Person结构体//使用 数据类型 成员变量的形式来定义int age;结构体可以组合多种不同的成员变量,成员变量可以是各种数据类型,包括整数,浮点数,字符串和其他结构体等,所以你可以根据需要定义自己的结构体来组织数据。//链表节点结构体int val;

2025-07-08 23:02:12 578

原创 Git学习第四天 Git使用分支的时候解决合并冲突

这个时候可以使用git status命令来查看发生冲突的列表,也可以使用git differ命令来查看究竟是哪些内容产生了冲突,git会把两个分支的修改内容全都显示出来,于是我们需要做的就是收工编辑这个文件,然后留下我们想要的这个文件之后,我们再来继续提交,可以看到,打开之后。文件内容是这样的,我们把左箭头,等号和右箭头都去掉,把第二行的内容合并到第一行的后面,然后我们再来添加一个逗号,这样我们就把两个分支的修改内容合到了一起。这个时候就需要我们手动来解决冲突,首先我们来看一个合并冲突的例子,首先使用。

2025-07-08 15:38:17 254

原创 Git学习第四天 GUI工具

分支是Git中一个非常重要的功能,我们可以把他们看作代码库中的不同版本,可以独立存在,并且有自己的提交记录,就像是一根树的不同枝干,每个枝干都有属于自己的生长轨迹,所以被形象的称之为分支。

2025-07-08 15:09:24 971

原创 Git学习第三天(Git远程仓库) 算了当年的事情各有各的难处,我不怪你了

但是这只是我们本地仓库的状态,,并没有提交到远程仓库中,这是因为Git是一种分布式管理系统,我们的本地仓库和远程仓库是两个仓库,他们之间是相互独立的,我们可以在本地仓库中做任何修改,但是这些修改不会影响到远程仓库,同样远程仓库的任何修改也不会影响到本地仓库,因此我们需要使用命令来同步两个仓库的内容,让他们的状态保持一致。最后一行的意思就是将本地的main分支与远程的origin的main分支关联起来, 如果本地分支的名称与远程分支的名称相同的话,我们就可以省略,只写一个main就可以了。

2025-07-07 14:59:56 313

原创 git学习第二天(.gitignore)

gitignore表示可以忽略的文件。使用echo access.log>.gitignore,于是,我们在暂存区只能看到.gitigonre文件,而access.log文件我们已经看不到了这样我们就忽略了access.log文件可以看到other.log已经被添加到我们的版本库里面,但是other.log没有被添加进来,我们成功的忽略掉了access.log这个文件,因此在实际使用过程中,我们一般会忽略掉所有的日志文件,我们也可以使用*.log这样的通配符来匹配所有以log结尾的文件。

2025-07-07 12:36:30 876

原创 git学习第二天(git diff命令)

一般我们在开发的时候更多的是使用一些图形化的工具,但是了解一下git diff这个命令还是很有必要的,因为有的时候我们需要在一些没有图形化工具的服务器上使用Git,git diff如果后面什么都不加的话,是默认比较工作区和暂存区之间的差异内容,他会显示发生更改的文件已经更改的详细信息。可以记住,可以使用vi加上要修改的文件的名称来开启编辑器之后按下:wq进行退出。

2025-07-05 18:12:27 470

原创 git学习第二天(git reset命令学习)(最重要的是做事,做好自己的事情)

在日常开发的时候,我们经常需要撤销以前的一些修改内容,或者回退到之前某一个版本,reset命令用于回退版本,可以用于回退到之前某一个提交的状态因此我们需要根据不同的场景来使用不同的参数。

2025-07-05 16:46:07 302

原创 git学习第一天(可以回头看但不能往回走,因为逆行全责)

可以看到我们已经进行了两次提交,每次提交都有一个唯一的提交ID,就是commit后面的那个16进制的字符串,还有每次提交的作者和邮箱,以及提交的时间和刚刚提交时编写的注释信息等等内容,这些信息都是我们使用git config命令配置的,git log命令后面还可以接受一些参数,比如。,git在提交的时候只会提交暂存区中的文件,而不会提交工作区中的其他文件,比如现在这个file2.txt就没有添加到暂存区,所以在提交的时候是不会被提交到仓库里面的,这是很多同学在提交的时候容易搞错的。

2025-07-04 19:21:47 662

空空如也

空空如也

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

TA关注的人

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