自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 栈和队列——数据结构学习笔记

ADT Stack{数据对象:数据关系:约定an端为栈顶,a1端为栈底基本操作:初始化,进栈,出栈,取栈元素等}ADT StackADT Queue{数据对象:数据关系:约定a1端为队列头,an端为队列尾基本操作:初始化,入队,出队等}ADT Queue。

2024-04-18 02:44:09 411

原创 C++EasyX之井字棋

【代码】C++游戏开发之井字棋

2023-12-02 17:13:07 355

原创 C++EasyX之跟随鼠标移动的小球

【代码】C++游戏开发之跟随鼠标移动的小球。

2023-12-02 14:54:13 261

原创 对继承和对象组合的理解

继承和对象组合的区别

2023-11-29 18:01:24 462

原创 设计模式之Strategy策略模式

定义一系列算法,把它们一个个封装起来,并且使它们可互相替换(变化)。该模式使得算法可独立于使用它的客户程序(稳定)而变化(扩展,子类化)。

2023-11-29 17:42:41 264

原创 设计模式之Template模式(模板方法)

定义一个操作中的算法的骨架 (稳定),而将一些步骤延迟 (变化)到子类中。Template Method使得子类可以不改变 (复用)一个算法的结构即可重定义(override 重写)该算法的 某些特定步骤。在软件构建过程中,对于某一项任务,它常常有稳定的整体操作结构,但各个子步骤却有很多改变的需求,或者由于固有的原因 (比如框架与应用之间的关系)而无法和任务的整体结构同时实现。) 为很多应用程序框架提供了灵活的扩展点,是代码复用方面的基本实现结构。

2023-11-29 13:46:15 295

原创 面向对象设计模式入门知识

面向对象设计原则

2023-11-28 21:20:57 356

原创 QT基础实践之图片浏览系统/抽奖系统

链接:https://pan.baidu.com/s/1p2X3Qr5iX1JomMvRX_oD3A。点击开始后 按照传给定时器的时间进行 用随机数操作范围地址下标展示图片即可。每次点击 进行整型的+1,同时字符串列表存的地址下标展示图片 上一张同理。,先用一个字符串列表进行地址储存和一个整型进行访问位置的记录。点击开始后 按照传给定时器的时间进行 下一张操作的重复即可。true时 定时器停止 并把按钮的停止变为开始。这里的取反操作 是为了下一次点击操作的实现。布尔型进行按键状态的判断。

2023-11-27 18:23:29 233

原创 QT基础实践之QQ登录界面

链接:https://pan.baidu.com/s/1v_J4WQjZoSAoMrIpx88PbA。

2023-11-26 20:21:00 111

原创 QT学习笔记

信号槽的优点,松散耦合, 信号的发送端 和 接受端本身是没有关联的,通过connect连接将两端耦合到一起。回调( callback)是一个函数指针,当一个事件发生时被调用,任何函数都可以被安排作为回调。当信号被发射时,QT代码将回调与其相连接的槽函数。信号将由元对象处理moc自动翻译成C++代码。Qt采用信号和槽实现对象部件之间的通信。信号的声明不在cpp文件中,而在头文件中。连接 connect 四个参数。

2023-11-24 16:06:50 128

原创 QT基础实践之简易计算器

判断状态为1开始计算,首先将a和b字符串转为浮点型并根据F的符号进行计算,用浮点型是为了除法的正确性,为了确保连续计算,再次将sum变为字符串放入a里,然后显示答案在ant显示栏,将状态回调到0,清空b串。其他符号以此类推,这里先判断是否状态为第二个数字的输出状态,同时是为了在没点击=的时候,进行连续计算的关键 同时在后面设置状态为 1,并储存符号到F字符串中去,并显示;同时将QLineEdit设置为只读,因为他的作用只是为了显示,不可以进行输入,同时可以设置为显示右对齐,比较符合计算器的模式。

2023-11-24 16:04:24 451

原创 C++新特性学习

c++11。

2023-11-23 00:08:52 110

原创 C++提高编程笔记

/vector容器存放自定义数据类型public:int age;对于仿函数的编写相对麻烦一点,其他的大差不差public:int age;public:player p1("刘备",32);player p2("诸葛亮",31);player p3("关羽",25);player p4("张飞",23);it!= s.end();

2023-11-18 17:50:59 87

原创 C++ STL实践案例

公司今天招聘了10个员工(ABCDEFGHIJ),10名员工进入公司之后,需要指派员工在那个部门工作。分组后,将员工部门编号作为key,具体员工作为value,放入到multimap容器中。通过multimap进行信息的插入 key(部门编号) value(员工)员工信息有 : 姓名 工资组成;部门分为:策划、美术、研发。遍历vector容器,取出每个员工,进行随机分组。创建10名员工,放到vector中。随机给10名员工分配部门和工资。

2023-11-18 17:23:59 89

原创 QT 入门

Qt是一个跨平台的C++图形用户界面应用程序框架。

2023-11-17 00:01:19 78

原创 Qt之多语言支持的功能

这段代码是Qt 框架的国际化(Internationalization,简称 i18n)功能的一部分中的QTranslator类,其功能是来实现多语言支持的功能。它的作用是根据系统当前的语言设置,加载对应的翻译文件,然后安装翻译器,以便在程序运行时将界面和文本翻译成对应的语言。最终的效果是,程序会尝试加载当前系统支持的每种语言对应的翻译文件,一旦成功加载了某种语言的翻译文件,就会安装该翻译文件,然后停止加载其他语言的翻译文件。

2023-11-16 11:45:20 258

原创 C++之map/multimap

pair中第一个元素为key(键值),起到索引作用,第二个元素为value(实值)map/multimap属于关联式容器,底层结构是用二叉树实现。multimap允许容器中有重复key值元素。map中所有元素都是pair(对组)可以根据key值快速找到value值。map不允许容器中有重复key值元素。所有元素都会根据元素的键值自动排序。可以利用仿函数改变其排序方式。

2023-11-15 19:54:54 108

原创 C++之set/multiset

对于仿函数的编写相对麻烦一点,其他的大差不差public:int age;public:player p1("刘备",32);player p2("诸葛亮",31);player p3("关羽",25);player p4("张飞",23);it!= s.end();it++) {cout << "名字:" << it->name << " 年纪:" << it->age << endl;

2023-11-15 19:07:53 67

原创 C3848 VS2022错误原因

可用性:当您在const对象上调用一个const成员函数时,可以确信这个函数不会引起对象状态的改变,这使得在使用const对象时也能够使用这个函数。清晰性:标记成员函数为const可以使其接口更清晰地表明其行为,其他开发人员在使用和阅读代码时可以更容易地理解函数的作用。安全性:通过声明成员函数为const,可以确保在该函数内部不会对类的数据成员进行修改,从而提高代码的安全性。在学习C++STL中的set时,尝试利用仿函数,改变set的排序规则,代码如下。在仿函数中,重载()的函数后面加const。

2023-11-15 18:43:01 249

原创 关于const迭代器访问的思考

这里迭代器可以看作指针,加const后就是常量指针,常量指针(const 指针)只能调用常量成员函数。当你有一个指向常量对象的指针时,即使你的函数不对值进行修改,为了保证对象的状态不被修改,只能通过该指针调用常量成员函数。下面这段代码 写出来感觉没什么问题 但无法对函数进行调用。1.解引用迭代器获得对象引用 在调用。3.在成员函数后面加const。三种解决方法代码(水)

2023-11-14 21:29:42 112

原创 关于C++中list链表的迭代器的思考

学习时 对于list中的begin和end两个迭代器产生了疑问,如果是双向循环链表的话,那么指向不就是同一块地址了吗?第一个结点指针域中prev指针指向最后一个结点的数据域 而最后一个结点的next指针指向第一关结点的数据域 如图红线部分。在 list 中,每个元素通常由一个节点对象来表示,节点对象中包含了元素的值以及指向下一个节点和上一个节点的指针。对于标准库中的 list,每个元素(节点)在内存中是分开存储的,因此它们的迭代器是单独的地址。,而不是直接指向元素的值,因此它们是。

2023-11-14 21:07:31 420

原创 C++之list(链表)

由于链表的存储方式并不是连续的内存空间,因此链表list中的迭代器只支持前移和后移,属于。

2023-11-14 20:39:56 345

原创 C++之queue(队列)

front - 队头 back - 队尾。队列容器允许从一端新增元素,另一端移除元素。可以被外界使用,因此队列不允许有遍历行为。push - 入队 pop - 出队。Queue(队列)是一种。的数据结构,他有两个出口。

2023-11-14 16:41:48 1139

原创 C++之stack(栈)

栈中只有顶端的元素才可以被外界使用,因此栈中无遍历的行为。push - 入栈 pop - 出栈。最里面 - 栈底 入口处 - 栈顶。在内存里 栈底高地址 栈顶低地址。stack(栈)是一种。

2023-11-14 16:41:05 322

原创 C++随机数的实现

在C++中实现一定范围的随机数的方式。

2023-11-13 21:24:32 197

原创 C++之string、vector、deque容器综合案例

有5名选手:选手ABCDE,10个评委分别对每一名选手打分,去除最高分,去除评委中最低分,取平均分。

2023-11-13 21:16:10 274

原创 C++之deque容器

多段缓冲区,头尾的缓冲区留有插入的位置,但读取 中间的数据时,需要重新在中控器寻找该段的地址。:deque数组只有大小概念,没有容量,因为可以无限插入,双端数组,改中控器即可。中控器维护的是每个缓冲区的地址,使得使用deque时像连续的内存空间。1.vector对于头部的插入删除效率低,数据量越大,效率越低。2.deque相对而言,对头部的插入删除速度回比vector快。注意:插入和删除提供的位置是迭代器,而不是数字。对于支持随机访问的迭代器,都可以用。,维护每段缓冲区内容,

2023-11-13 17:44:52 193

原创 C++之vector容器

并不是在原空间之后续接新空间,而是找更大的内存空间,然后将原数据拷贝新空间,释放原空间。:不同之处在于数组是静态空间,而vector可以动态扩展。vector数据结构和数组非常相似,也称为。数据量大 可以直接预留出大小 避免重新开辟。返回容器容量 — capacity();重新指定大小 — resize();判断是否为空 — empty();返回元素个数 — size();

2023-11-10 19:53:50 103 1

原创 STL之string

string类内封装了许多成员方法,如查找find,拷贝copy,删除delect,插入insert,替换replace。string是一个类,类内封装了char *,管理这个字符串,是一个char *的容器。find 从左往右查找 rfind 从右往左查找 但显示都是正常下标。string时C++风格的字符串,而string本质上时一个类。string的赋值方式很多,operator=常用。string管理char *所分配的内存,感觉比较好理解,部分就不写举例了。char * 是一个指针。

2023-11-07 22:17:28 57

原创 迭代器访问数据(初学)

但当迭代器指向的数据也为指针时,需要对他进行两次解引用或者一次解引用后用**->**的方式指向所要访问的数据。可以将迭代器看作指针,在需要显示其指向的数据时需要对他进行解引用。

2023-11-07 16:07:20 62

原创 C++数组类封装 模板案例

学完模板,实践操作。

2023-11-06 23:29:11 77

原创 C++模板笔记

2.可以通过空模板参数列表来强制调用函数模板 (指定类型推导的方式,但不指定)typename —— 表面其后面的符号是一种数据类型,可以用class代替。模板的通用性不是万能的,如数组的赋值和类内数据大小比较等…1.指定传入的类型 2.参数模板化 3.整个类模板化。1.自动类型推导,需要推导出一致的类型T才可以使用。1.如果函数模板和普通模板都可以实现,优先普通模板。2.模板必须确定出T的数据类型,才可以使用。2.类模板中的成员函数在调用时才可以创建。T —— 通用的数据类型,名称可以换。

2023-11-06 01:12:31 59

原创 基于多态的职工管理系统

【代码】基于多态的职工管理系统。

2023-10-31 02:14:26 94 1

原创 c++中使用switch…case遇到的问题

学习完多态写小项目时遇到的问题。

2023-10-30 17:21:37 283 1

原创 C++ 对动态分配的内存的释放

delete和delete[]是用于释放动态分配的内存的运算符。deletenew在这种情况下,delete会调用指向的对象的析构函数,并释放分配的内存。delete[]new[]在这种情况下,delete[]会,并释放整个数组所占用的内存空间。当使用new[]运算符创建动态数组时,编译器会在分配的内存块中存储数组的长度信息。这个长度信息通常是通过一个隐藏的标头来记录的,以便delete[]操作符能够知道需要释放的内存的确切长度。因此,当你使用delete[]

2023-10-29 18:50:01 198 1

原创 C++笔记

1.创建.h后缀名的头文件2.创建.cpp后缀名的源文件3.在.h里声明函数4.在.cpp里编写函数。

2023-10-18 01:36:44 80 1

原创 MySQL笔记

执行顺序 1.from 2.where 3.group by 4.having 5.select 6.order by 7.limit。

2023-09-25 20:42:01 131 1

原创 C++中递增运算符重载的理解

对c++递增运算符重载的理解

2023-05-31 00:01:23 88 1

原创 静态成员函数和非静态成员函数的区别

静态成员函数和非静态成员函数的区别

2023-05-27 12:18:05 1038 1

原创 如何解决没有与参数列表匹配的构造函数

对于没有与参数列表匹配的构造函数报错的解决

2023-05-26 21:13:14 2711

空空如也

空空如也

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

TA关注的人

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