自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 C++ 智能指针

STL和智能指针关系1.STL 是标准库的子集:专注于数据结构与算法。2.智能指针属于 “通用工具库”:与 std::thread、std::future 等工具同属一类,不隶属于 STL 的核心组件。

2025-06-10 23:55:10 328

原创 STL 6分配器

在 C++ STL 分配器中,rebind 是一个必须实现的嵌套模板结构体,其核心作用是允许分配器为不同类型的对象创建适配版本。这是分配器设计中的一个关键机制,用于处理容器内部可能需要的不同类型的内存分配。通过类型别名,分配器将这些信息暴露给容器和算法,使它们能够在不依赖具体实现的情况下正确操作内存。3.类型抽象:使容器与具体内存管理解耦,支持不同的内存策略。3.大小和距离的类型:如何表示内存块的大小和指针间的距离?2.内存池分配器:为固定大小的对象优化内存分配。1.分配器的核心功能。

2025-06-10 23:48:20 206

原创 STL 5 适配器

STL 适配器是一类特殊的组件,用于修改其他组件的接口,使其适配特定场景。它们本身不提供完整功能,而是通过包装现有组件来改变其行为。

2025-06-10 23:43:22 503

原创 STL 4函数对象

函数对象(Functor)是 C++ STL 的核心概念之一,它允许类实例像函数一样被调用。

2025-06-10 23:33:19 159

原创 STL 3算法

1.例如,std::sort 要求随机访问迭代器,因此无法用于 list(需用 list::sort)。2.算法复杂度影响性能:std::binary_search 的 O (log n) 复杂度依赖于有序序列和随机访问迭代器。

2025-06-10 23:21:39 428

原创 STL 2迭代器

2.统一接口:通过迭代器,算法可以操作任意容器(如 vector、list、map),无需关心容器的底层实现。1.双向迭代器的全部操作:自增(++)、自减(–)、解引用读写(*it、*it = value)。1.前向迭代器的全部操作:自增(++)、解引用读写(*it、*it = value)、多次遍历。2.随机位置跳转:支持 +=、-=、+、- 操作(如 it += 5 直接跳到第 5 个位置)。1.输入迭代器的全部操作:自增(++)、解引用读取(*it)、相等比较(==/!

2025-06-09 22:03:20 602

原创 STL 1 容器

STL 的核心思想是将算法与数据结构分离,通过模板让两者都能独立于具体数据类型,从而实现 “一次编写,多场景复用”。

2025-06-09 21:40:57 683

原创 C++ 重载和模板

其核心作用是让自定义类型(如类、结构体)能够像内置类型一样使用运算符(如+, ==, <<)或进行类型转换。在模板内部,当引用依赖于模板参数的嵌套类型时,必须使用 typename 标识这是一个类型(而非变量或函数)。模板(Templates) 是一种泛型编程机制,允许你编写与类型无关的代码,从而实现高度可复用的组件。operator关键字后接运算符符号(如+, -, []),用于定义自定义类型的运算符行为。1.可重载的运算符:如+, -, *, /, ==, [], (), <<, >>等。

2025-06-05 20:11:28 581

原创 C++类二

当类使用虚继承时,其对象内存布局中会包含一个虚基类指针(vbptr),该指针指向一个虚基类表(VBT,Virtual Base Table)。4.基类与派生类不共享 VTable:VTable 是类级别的,不同类的 VTable 即使内容相同也不共享。继承是面向对象编程的核心特性,允许一个类(派生类 / 子类)继承另一个类(基类 / 父类)的属性和方法。当通过基类指针删除派生类对象时,若基类析构函数不是虚函数,只会调用基类的析构函数,导致派生类资源泄漏。当前类到间接虚基类的偏移量(如菱形继承中的共同基类)

2025-06-05 19:42:05 723

原创 C++ 类一

类(Class) 是 C++ 中实现面向对象编程(OOP)的核心机制,它将数据(成员变量)和操作数据的函数(成员函数)封装在一起,形成一个独立的实体。其他:如果类的析构函数、拷贝构造函数或拷贝赋值运算符被显式删除(= delete),默认构造函数可能被隐式删除(取决于具体编译器实现)。2.被隐式删除:类有引用成员或const成员或没有默认构造函数的类类型成员。2.被隐式删除:类有引用成员或 **const成员 ** + 扩充。2.被隐式删除:类有引用成员或 **const成员 ** + 扩充。

2025-06-04 23:22:29 479

原创 C++ 变量三

1、结构体:是一种用户自定义的数据类型,可将不同类型的数据组合成一个逻辑单元。2、成员变量:构成结构体的数据元素。3、访问方式:通过点运算符(.)访问成员。

2025-06-04 21:37:10 733

原创 C++ 变量二

1.声明:告诉编译器变量的存在(如extern int x;),不分配内存。2.定义:为变量分配内存并可初始化(如int x = 0;

2025-06-04 19:59:34 874

原创 C++ 变量一

RTTI(Run-Time Type Information,运行时类型信息)是 C++ 提供的一种机制,允许程序在运行时获取对象的类型信息。使用场景:需要将基类指针 / 引用安全地转换为派生类指针 / 引用,且必须在运行时验证对象的实际类型时,使用 dynamic_cast。2、值类型的向下转型(将基类对象直接转换为派生类对象)是被禁止的,会编译报错。显式转换要求开发者主动声明转换行为,迫使思考转换的合理性,避免 “意外转换”。1、隐式类型转换都使用,在继承层级内的指针/引用转换(不进行运行时检查)。

2025-06-03 20:19:45 801

原创 Qt 窗口部件(2)输入部件详解

QLineEdit(单行文本输入)QTextEdit(多行富文本编辑)QSpinBox/QDoubleSpinBox(数值输入框)QComboBox(下拉选择框)QSlider/QDial(滑块和旋钮)QCheckBox/QRadioButton(复选框和单选按钮)QLineEdit 主要用于接收用户的单行文本输入,具备文本显示、编辑、验证和格式化等功能。使用setInputMask()限制输入格式_");1、格式说明:占位符9表示只能输入数字,分号;

2025-05-11 16:21:28 1135

原创 Qt 窗口部件详解(一) QButton

窗口部件本质上是继承自QWidget类或其派生类的对象。QWidget类处于 Qt GUI 类层次结构的核心位置,所有具体的窗口部件都直接或间接继承了它的特性。文本和图标文本:可通过setText(const QString &text)方法设置按钮上显示的文本,使用text() const方法获取当前显示的文本。图标:利用setIcon(const QIcon &icon)方法为按钮设置图标,使用icon() const方法获取当前的图标。按钮状态。

2025-05-11 08:58:39 1037

原创 Qt 信号与槽及元对象系统

qRegisterMetaType:将自定义类型注册到元对象系统中,让元对象系统能够识别该类型,这样在封装和提取事件参数时,才能知道参数的具体类型。Q_DECLARE_METATYPE:为自定义类型生成必要的元信息,这些元信息用于元对象系统在事件处理过程中进行类型检查、复制和转换等操作。在使用自定义类型时,需遵循特定的步骤。通常先使用Q_DECLARE_METATYPE进行编译时声明,使QVariant能够识别自定义类型;

2025-05-11 08:58:30 533

原创 Qt 坐标体系详解

x()、y()、topLeft()和bottomRight():返回的矩形位置信息使用的坐标系取决于QRect对象创建方式。QPainter ,默认 Viewport和Window坐标系重合,其原点 (0, 0) 处于绘制设备(像 QWidget、QPixmap 这类)的左上角位置,X 轴正方向朝右,Y 轴正方向朝下。以整个屏幕为参考,屏幕左上角是坐标原点 (0, 0) ,X 轴正方向向右,Y 轴正方向向下。以窗口自身为参考,窗口左上角为坐标原点 (0, 0),X 轴正方向向右,Y 轴正方向向下。

2025-05-11 08:58:19 268

原创 Qt 样式表:全面解析与应用指南

在 Qt 开发中,样式表(Style Sheets)是定义应用程序界面外观的关键工具。它采用文本格式的规则集合,借鉴了 CSS 语法,借助选择器、属性和值,能精准把控各类控件的外观表现,极大提升了界面设计的灵活性与美观性。

2025-05-11 08:58:08 810

原创 qt 布局管理

布局管理器会根据子控件的sizeHint()(建议大小)和minimumSizeHint()(最小建议大小)来调整父窗口的大小。minimumSizeHint():同样是QWidget类的虚函数,返回的是控件能够正常显示所需的最小尺寸。sizeHint():是QWidget类的一个虚函数,返回的是控件的建议大小。这个大小是根据控件的内容、字体、图标等因素自动计算得出的,布局管理器通常会优先按照这个建议值来布置控件。当窗口大小改变时,布局管理器会自动调整其内部部件的位置和大小,以保持界面的整洁和一致性。

2025-05-11 08:57:46 477

原创 Qt 事件处理机制详解

在 Qt 中,事件是对程序运行时各类状况的抽象表示。

2025-05-11 08:57:12 574

原创 《STL源码剖析》笔记记录

STL源码剖析》笔记记录。

2025-03-02 15:54:28 400

原创 C++ 常见面试知识点

对于局部常量,存放在栈区;对于全局常量,编译期⼀般不分配内存,放在符号表中以提⾼访问效率;字⾯值常量,⽐如字符串,放在常量区。

2025-02-27 23:46:38 544

原创 QGraphicsView框架介绍

介绍QGraphicsView框架

2025-02-23 13:49:29 290

原创 Unix网络编程笔记(一、简介和TCP/IP)

MSL是任何IP数据报在因特网中可以存活的最大时间。A并不知道B是否接到自己的ACK,A是这么想的:1)如果B没有收到自己的ACK,会超时重传FiN那么A再次接到重传的FIN,会再次发送ACK2)如果B收到自己的ACK,也不会再发任何消息,包括ACK无论是1还是2,A都需要等待,要取这两种情况等待时间的最大值,以应对最坏的情况发生,这个最坏情况是:去向ACK消息最大存活时间(MSL) + 来向FIN消息的最大存活时间(MSL)。

2024-11-30 14:09:20 1013 1

原创 《c++并发编程实战》 笔记

这个新的可调用对象在调用时,会调用原始的可调用对象,并传递给它预先绑定的参数(如果有的话),以及调用新可调用对象时提供的任何额外参数。使用std::shared_future::wait,std::shared_future 与 std::future 类似,但主要区别在于 std::shared_future 可以被多个线程或对象共享,而 std::future 一旦被移动或拷贝后,原始对象将不再持有任何结果,变成空状态。std::call_once 是 C++11 引入的一个函数,它属于 头文件。

2024-08-18 12:44:19 1183

原创 调试技巧总结

3.观察问题的过程,找到足够细节做判断,而不是随意做猜测。4.细化问题范围(二分法、多分法)5.记录定位的步骤、顺序和结果。7.与他人讨论,获得新角度。容易排查过程中忘记、记错。学习目的:提高调试效率。1.了解工作原理/流程。8.闭环(解决问题)

2024-08-18 12:38:18 177

原创 Effective C++记录(精简版)

1、尽可能延后变量定义式的出现,尽可能在初始化的时候给初值实参,这样做可增加程序的清晰度并改善程序效率。1、绝对不要重新定义继承而来的non-virtual函数。会打破public继承时is a的关系。1、绝对不要重新定义一个继承而来的缺省参数值,因为缺省参数值都是静态绑定(使用指针类型函数默认参数),而virtual函数——你唯一应该覆写的东西却是动态绑定。

2024-07-07 13:46:43 905 1

原创 网络编程学习

什么是超文本?文本:在互联网早期的时候只是简单的字符文字,但现在已经可以扩展为图片、视频、压缩包等。超文本:超越了普通文本的文本,它是文字、图片、视频等的混合体,最关键有超链接,能从一个超文本跳转到另外一个超文本。举例:HTML 就是最常见的超文本了,它本身只是纯文字文件,但内部用很多标签定义了图片、视频等的链接,再经过浏览器的解释,呈现给我们的就是一个文字、有画面的网页了。HTMLHTML 称为超文本标记语言,是一种标识性的语言。

2024-04-08 23:59:09 790

原创 常见加密和解密方法介绍。

介绍常见的加密和解密方法。常用的加密当时有三种分别是:对称加密:指数据加密和解密使用相同的密钥 数据的机密性: DES,AES非对称加密:也叫公钥加密,指数据加密和解密使用不同的密钥 密钥对儿 身份验证 DSA,RSA单向加密:指只能加密数据,而不能解密数据 数据的完整性 MD5,SHA系列算法。

2023-10-02 21:32:39 806 1

原创 字符编码基本介绍

总结字符、字符集和字符编码的定义,了解编码如何乱码问题。

2023-09-10 15:19:59 345 1

原创 《QT 5.9 C++开发指南》学习笔记

问题:动态投射有啥用啊qvariant是什么类型,为什么可以支持其他类型。Qt并不是一个编程语言,它实质上是一个跨平台的C++开发类库,是用标准C++编写的类库,它为开发GUI应用程序和非GUI应用程序提供了各种类。Qt的元对象编辑器(Moc)是一个预处理器,在源程序被编译前先将这些Qt特性的程序转换为标准C++兼容的格式,然后再由C++编译器进行编译。所以要添加一个Q_OBJECT宏。

2023-04-16 12:32:09 1614

原创 C++ 变量内存分布

介绍变量在内存中的分布情况

2023-01-27 10:01:06 254

原创 C++ 三大特性:继承、封装和多态

C++ 三大特性:继承,封装和多态

2023-01-23 20:16:18 282

原创 正则表达式

正则表达式入门以及基础知识点介绍。

2022-09-04 16:07:18 127

原创 C ++ primer

C++ primer 第五版笔记

2022-07-03 11:17:52 3623 1

原创 QT知识专栏

Model/View 结构数据:实际的数据,如数据库的一个数据表或SQL查询结果,内存中的一个 StringList,或磁盘文件结构等。Model:与实际数据通信,并为视图组件提供数据接口。View:屏幕上的界面组件,视图从数据模型获得每个数据项的模型索引(model index),通过模型索引获取数据。代理:定制数据的界面显示和编辑方式。在标准的视图组件中,代理功能显示一个数据;当数据被编辑时,提供一个编辑器,一般是QLineEdit。结构图:原文链接:http://c.biancheng.n

2022-07-03 08:43:21 272

原创 设计模式专栏

系列文章目录设计模式分类总共23种,三大类型。创建者模式 与对象创建有关,涉及到对象实例化方式,共5种。结构型模式 如何组合类和对象,获取更大结构,共7种行为型模式 类之间互相交互和分配指责 共11种 提示:这里可以添加系列文章的所有文章的目录,目录需要自己手动添加例如:第一章 Python 机器学习入门之pandas的使用提示:写完文章后,目录可以自动生成,如何生成可参考右边的帮助文档文章目录系列文章目录设计模式分类前言一、pandas是什么?二、使用步骤1.引入库2.读入

2022-04-06 21:46:25 774 1

原创 理解strtok函数返回值

当strtok()在参数s的字符串中发现参数delim中包含的分割字符时,则会将该字符改为\0 字符。在第一次调用时,strtok()必需给予参数s字符串,往后的调用则将参数s设置成NULL,要注意字符串对应值已发生替换。strtok有一个this指针,找到分割字符时,this指针指向分割字符的下一个地址,函数返回分割字符串的起始地址,当分割时,找不到分割符,此时函数返回的是剩余字符串起始地址...

2019-09-25 20:14:30 4109 1

原创 KRC歌词文件如何转化为lrc文件,并在Linux虚拟机下观看

1.点击链接,下载转换软件(很小,一下就下好了)链接:https://pan.baidu.com/s/1v6dpaWtbBORivQsNFAlphA提取码:1vhp2.此时在Linux中观看发现是一堆软码,如何看到汉字呢?如下操作:3.用记事本打开lrc文件,点击另存为,保存类型为所有文件,编码选择UTF-84.现在可以在Linux中观看了。...

2019-04-06 14:22:29 1143

原创 Ubuntu 18.04安装sublime text 3 出错解决方法

1.终端输入sudo-apt-repository ppa:webupd8team/sublime-text-3,添加sublime text 3的软件源然后我就发现出错了,结果如图在网上找了很多教程,最终解决了这个问题:a.那个error显示是说the repository "……"does not have a release file,网上有说是ppa过期了什么的,说应该把ppa重命...

2019-03-17 22:11:00 1770 1

空空如也

空空如也

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

TA关注的人

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