自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 【C++】STL--priority_queue(优先级队列)使用及其模拟实现、容器适配器和deque(双端队列)了解

本文介绍了C++中priority_queue、容器适配器及deque的基本概念与应用。priority_queue作为堆结构的容器适配器,默认使用vector实现大顶堆,可通过greater实现小顶堆。容器适配器如stack和queue默认基于deque实现,因其高效的头尾操作特性。文章详细分析了deque的双向开口设计、中控器结构和迭代器实现,同时指出其遍历效率低的缺陷。最后解释了选择deque作为stack/queue底层容器的原因:无需遍历的特性完美规避了deque的缺点,同时充分利用其高效插入删除

2025-09-18 12:19:28 870 7

原创 【C++】STL--stack(栈)queue(队列)使用及其重要接口模拟实现

本文介绍了栈(stack)和队列(queue)两种容器适配器的实现。栈遵循后进先出原则,基于deque等底层容器实现,提供push、pop、top等接口;队列遵循先进先出原则,同样基于deque等容器实现,支持push、pop、front/back访问等操作。文章详细说明了它们的接口设计,并通过测试用例验证了功能实现,包括基础操作测试、不同底层容器测试以及边界情况测试。测试结果表明,这两种容器适配器均能正确处理元素入栈/队列、出栈/队列以及空容器等特殊情况。

2025-09-18 12:19:02 792 5

原创 【C++】STL--List使用及其模拟实现

本文介绍了C++中list容器的基本特性、实现原理及常见接口。list是基于双向链表实现的序列容器,支持高效插入/删除操作(O(1))但不支持随机访问(O(n))。文章详细讲解了list迭代器的实现方式,包括运算符重载;分析了构造/析构函数、容量查询、插入删除等核心接口的实现原理;特别强调了list迭代器失效问题及解决方案;最后通过与vector的对比,总结了list在插入删除效率、空间利用率等方面的特点及适用场景。list适合频繁插入删除但不需随机访问的场景。

2025-09-15 11:37:00 1148

原创 【C++】STL--Vector迭代器失效问题

本文深入探讨了C++ vector中迭代器失效问题。主要包括:1)空间改变操作(如扩容)会导致迭代器指向旧空间而失效;2)元素删除操作可能导致迭代器失效,特别是尾删时;3)对比VS和g++编译器对失效迭代器的处理差异,VS更严格而g++可能有隐患。文章通过代码示例说明失效场景,并强调无论何种编译器都应重新赋值失效迭代器以确保程序正确性。

2025-09-15 11:36:40 740

原创 【C++】STL--Vector使用及其模拟实现

本文介绍了C++ STL中的vector容器,包括其底层实现原理、常用接口及模拟实现。vector是动态数组,采用连续内存存储,支持高效随机访问。文章详细讲解了vector的构造方式、迭代器使用、空间管理策略(如扩容机制在VS和gcc下的差异),以及增删改查等核心操作的具体实现。通过代码示例展示了push_back、insert、erase等关键函数的实现逻辑,并提供了完整的测试用例验证功能。最后比较了不同编译环境下的扩容行为差异,帮助读者深入理解vector的内部工作机制。

2025-09-11 16:51:39 963 3

原创 【C++】string类--常见接口及其模拟实现

本文详细介绍了C++ string类的常用操作及其实现方法,主要包括五部分内容:1.遍历方式(下标访问、c_str、迭代器、范围for);2.增加操作(push_back、+=重载、append、insert);3.删除操作(erase);4.查找操作(查找字符/字符串、字符串比较);5.修改操作(reserve和resize的区别与实现)。文章通过代码示例展示了各个接口的具体实现细节,特别是对字符串扩容、插入删除等关键操作的处理逻辑进行了详细说明。

2025-09-11 16:51:20 909 2

原创 【C++】Template:让你的代码更通用更优雅

本文介绍了C++中的模板编程,主要包含函数模板和类模板。函数模板通过参数化类型实现代码复用,包括隐式/显式实例化及匹配原则(优先匹配普通函数,不允许自动类型转换)。类模板用于创建通用类结构,实例化时需指定具体类型。模板编程是泛型编程的基础,能提高代码复用率和可维护性。

2025-09-06 14:01:25 1099 1

原创 【C++】string类--构造、拷贝、赋值及其模拟实现

本文介绍了C++中string类的出现原因及实现。由于C语言字符串处理存在与数据分离、内存管理不便等问题,C++设计了string类来提供更安全的字符串操作。string本质是basic_string模板类的char类型实例化。文章详细讲解了string的构造函数、拷贝构造和赋值运算符重载的实现,特别强调了异常安全处理和现代写法中使用临时对象交换的技巧。通过模拟实现展示了string类的基本结构和内存管理机制,为理解标准库string的实现提供了参考。

2025-09-06 14:01:06 1002

原创 【QT学习之路】-Qt入门

本文介绍了Qt项目创建的基本流程和文件结构。首先说明了如何通过QtCreator创建"Hello World"项目,强调了项目路径不能包含中文。随后详细解释了项目中的核心文件:.pro配置文件(定义模块依赖和编译选项)、main.cpp(程序入口)、mainwindow.ui(XML格式的界面文件)、mainwindow.h/cpp(窗口类定义和实现)。接着对比了Qt的三种窗口类:QWidget(基类)、QDialog(对话框)和QMainWindow(带菜单栏的主窗口),并讲解了Qt的

2025-08-26 22:44:48 1059 1

原创 【QT学习之路】-信号槽

本文介绍了Qt框架中的信号槽机制。信号槽是一种观察者模式实现,通过connect()函数建立信号与槽的连接。文章详细阐述了信号和槽的本质、标准信号槽的使用方法,以及如何自定义信号和槽函数。其中,信号是事件触发的函数声明,槽是处理信号的成员函数。文末通过"女朋友饿了"的示例,生动展示了信号槽的工作原理,包括信号重载和参数传递的实现方式。该机制为Qt提供了灵活的事件处理能力。

2025-08-26 22:42:56 868 1

原创 【C++】一篇带你了解C++中的动态内存管理

C/C++程序内存管理解析:程序内存分为栈区(局部变量)、堆区(程序员管理)、数据段(全局/静态变量)和代码段。C语言通过malloc/calloc/realloc分配内存,free释放,其中calloc会初始化内存为0,realloc可调整内存大小。C++引入new/delete操作符,相比malloc/free,new能自动调用构造函数初始化对象,delete会调用析构函数清理资源。关键区别在于:new自动处理类型大小和初始化,失败抛出异常;malloc需手动计算大小和类型转换,失败返回NUL

2025-08-25 07:53:14 906

原创 【C++】类和对象--初始化列表、友元、static成员、内部类

本文深入讲解C++类和对象的核心概念,重点包括:1.构造函数的初始化列表使用及其必要性,特别是对const成员、引用成员和自定义类型成员的初始化;2.explicit关键字禁止单参构造函数的隐式转换;3.静态成员变量和静态成员函数的特性及使用场景;4.C++11成员初始化新特性;5.友元函数和友元类的定义与使用限制;6.内部类的定义及其作为外部类友元的特性。文章通过代码示例详细演示了这些核心概念的实际应用场景及注意事项。

2025-08-25 07:41:49 880

原创 【C++】类和对象--日期类Date补充及流提取、流插入

本文主要介绍了C++中Date日期类的三个重要补充内容:1. const成员函数的使用场景和注意事项,包括权限问题;2. 取地址操作符重载的实现及适用场景;3. 流提取(>>)和流插入(<<)运算符重载的详细实现方法。重点讲解了如何通过友元函数实现自定义类型的输入输出操作,并解决连续输入输出的返回值问题。文章通过具体代码示例展示了const成员函数、流操作符重载的实现细节,帮助读者深入理解这些重要概念在实际编程中的应用。

2025-08-25 07:41:12 854

原创 【C++】类和对象--一篇带你解决运算符重载实例--日期类

本文通过实现一个日期类(Date)来巩固C++运算符重载知识。主要内容包括:1. 实现日期类的基本功能,如构造函数、拷贝构造等;2. 重载比较运算符(==,<,<=,!=,>,>=),通过复用基础运算符减少代码量;3. 实现日期加减运算(+=,+,-=,-),注意处理跨月/跨年情况;4. 重载自增/自减运算符(++前置后置,--前置后置),利用参数区分前后置;5. 实现日期相减运算,计算两个日期之间的天数差。文中通过代码示例详细演示了每个运算符重载的实现方法,并提供了测试结果验证正确

2025-08-21 15:21:13 789 5

原创 【C++】类和对象--类中6个默认成员函数(2) --运算符重载

C++中的运算符重载概念:运算符重载的参数规则(操作数数量对应参数数量,成员函数隐含this指针),并指出传引用比传值更高效。5个不能重载的运算符(::、.、.*、?:、sizeof)

2025-08-08 21:01:55 669

原创 【C++】类与对象--类中的6个默认成员函数(1)

通过本篇你可以比较深入地了解到,6个默认成员函数中的构造函数、析构函数、拷贝构造函数同时篇末留了一个问题,深复制和浅复制的区别?

2025-07-29 11:29:35 853 1

原创 【C++】一篇带你了解C++中隐藏的this指针

通过阅读这篇文章能够对类和对象中隐藏的this指针有比较深入的了解

2025-07-16 22:47:05 685 4

原创 【C++】在C++中空指针用NULL来初始化还合适吗?

通过阅读这篇文章,大家可以对于空指针的初始化有个比较深入的了解。通过对比C++98和C++11的NULL和nullptr,来说明nullptr的优越性

2025-07-16 08:46:58 568 1

原创 【C++】带你一篇了解什么是OPP(面向对象编程),什么是封装?类和对象(上)

本文主要介绍了面向对象编程与面向过程编程的区别,以及C++中类的定义和使用。首先对比了两种编程范式:面向过程强调算法步骤,而面向对象关注数据和对象交互。通过足球统计案例展示了两种编程思维差异。然后详细讲解了C++类的定义方式、访问限定符(public/private/proprotected)的作用,以及封装的概念和优势。文章还解释了类的作用域、实例化过程,并分析了类对象的内存模型:成员变量存储在对象中,成员函数存放在公共代码段。最后指出类的大小仅包含成员变量,空类占用1字节空间。

2025-07-14 23:06:02 1217 2

原创 【C++】auto关键字 C++入门(5)

C++11中auto关键字被重新定义,从存储类修饰符变为类型推导指示符。auto让编译器在编译时自动推导变量类型,必须初始化且不能用于函数参数或数组声明。auto可与指针(*)、引用(&)结合使用,同一行多个auto变量类型必须一致。auto特别适用于新式for循环,配合引用可修改原数组元素。这种自动类型推导简化了代码编写,同时保持了类型安全性。

2025-07-13 21:01:44 713 1

原创 【C++】内联函数inline以及 C++入门(4)

C++内联函数(inline)的概念、作用及特性。内联函数对于编译器来说是一个建议,不代表使用了inline修饰,就一定在编译时就会使用函数体替换函数调用。

2025-07-11 22:37:15 772 1

原创 【C++】全套数据结构算法-线性表讲解(1)

在学习c++的同时复习一遍数据结构(复习的会更加深入一些),会深入底层一些(内存之类的)。然后加上题解,准备笔试题。

2025-07-11 15:58:10 978 1

原创 【C++】一篇带你搞懂引用 C++入门(3)

能够比较深入地了解C++的引用,尤其是传值和传引用的区别,然后是引用的使用场景

2025-07-04 22:59:41 695 1

原创 【C++】函数重载底层原理 C++入门(2)

C++实现函数重载的底层机制是修改了函数命名规则,在符号表中加入了参数类型信息(如_Z3Addid),而C语言仅保留函数名导致无法区分同名函数。

2025-07-02 15:28:13 751

原创 【C++】HelloWorld解析 C++入门(1)

这个暑假开始c++语言的学习,因为经过Java的学习后还是觉得c++要更深入一些,偏向底层。然后在学习C++的过程中,要结合之前学过的C语言和数据结构知识,希望能写出优质的C++文章。与君共勉!

2025-07-02 15:27:53 1096 1

原创 SQL ConcurrencyControl(并发控制)

Example:Schedule ASchedule BSchedule CSchedule DSchedule E从数据约束一致性来看,模式A、B、C是可串行化的,D的结果显然不满足条件,但是更改一下D的运算,E就能通过数据约束一致性检查,所以从逻辑上讲模式D和E都是错误的,所以总结来说,判断一个调度是否正确,应该是检查调度中的read和write的执行顺序会不会导致数据约束不一致的可能。

2025-06-11 09:47:13 1165

原创 SQL Authorization(授权)

主要介绍权限类型,权限的授予、权限的撤销(级联撤销、限制撤销)、权限图表示

2025-06-09 09:38:38 823

原创 SQL Indexes(索引)

索引是加速数据库查询的关键数据结构,主要有聚焦索引(每表只能有一个,物理存储顺序与索引一致)和非聚焦索引(SQL Server默认类型)。虽然能加速查询,但会降低数据修改效率。非聚焦索引通过存储聚焦索引关键字定位数据,当物理存储顺序改变时需重建索引。

2025-06-03 09:35:02 1298

原创 SQL Views(视图)

数据库视图的概念、类型及基本操作视图分为虚拟视图(仅查询构造)和物化视图(实际存储)两种类型。通过INSTEAD OF触发器实现虚拟视图修改的方法

2025-06-02 15:51:39 880 1

原创 SQL Transactions(事务)、隔离机制

什么事务?为什么要有事务功能?事务的四大特性、提交、回滚隔离机制(脏读、不可重复读、幻读)

2025-06-02 10:38:00 1203

原创 SQL Relational Algebra(数据库关系代数)

关系代数:选择、投影、笛卡尔积(连接)、重命名

2025-06-01 13:34:17 786 1

原创 Constraints and Triggers

数据约束(单属性键、多属性键、约束检查、断言)和触发器(ECA原则)

2025-05-31 13:41:09 1042

原创 Real SQL Programming

SQL在实际程序中的应用通常通过存储过程和嵌入式SQL实现,而非直接终端查询。存储过程(PSM)将常规语句与SQL结合,扩展了数据库功能,具有共享逻辑、屏蔽细节、提升安全性和性能等优势。其参数模式分为IN(输入)、OUT(输出)和INOUT(双向),通过OUT参数获取返回值。这种方式比直接SQL查询更高效灵活。

2025-05-30 11:28:55 1221 1

原创 SQL(Database Modifications)

数据库修改操作主要包括插入、删除和更新三类。插入可使用INSERT语句添加单条或多条记录,支持属性列表和默认值设置;删除通过DELETE语句移除满足条件的记录,过程分为标记和删除两阶段(重点考虑涉及到子查询的的删除语句);更新操作用UPDATE修改指定记录的属性值。这些操作不返回结果,而是直接改变数据库状态。

2025-05-29 15:45:52 976

原创 More SQL(Focus Subqueries、Join)

介绍了SQL子查询,包括子查询在FROM和WHERE子句中的使用、返回单行结果的子查询。一个重要的思考:子查询和连接之间能否相互转换?IN、EXISTS、ANY、ALL等运算符在子查询中的应用,以及UNION、INTERSECT、EXCEPT等集合操作重点是内连接(INNER JOIN)和外连接(OUTER JOIN)的区别

2025-05-28 15:39:18 719

原创 Introduction to SQL

SQL语言是一种结构化查询语言,包含数据查询(DQL)、数据控制(DCL)、数据定义(DDL)和数据操纵(DML)四类操作。其核心特点是操作对象为集合,语法简洁(仅9个核心功能),支持单表和多表查询。SELECT-FROM-WHERE是基本查询结构,其中FROM确定数据源,WHERE进行筛选,SELECT执行投影。SQL还支持模糊匹配(LIKE)、空值处理(NULL)、三值逻辑运算和聚合函数(SUM/AVG/COUNT等)。多表查询通过FROM子句实现,GROUP BY支持分组计算,HAVING用于分组后过

2025-05-27 19:43:05 778 1

原创 Multivalued Dependencies

多值依赖(MVD)是指在关系模式中,当X属性值相同时,Y属性值可交换且交换后的元组仍存在于关系中,且Y值独立于其他属性。MVD规则包括函数依赖可提升为MVD,以及互补规则。第四范式(4NF)要求非平凡MVD中的X必须是超键,它能消除MVD带来的冗余。4NF比BCNF更强,满足4NF必满足BCNF。分解4NF时,若X→→Y违反4NF,可将关系分解为XY和其余属性。例如饮酒者关系通过分解逐步满足4NF。

2025-05-25 11:09:10 870

原创 Design Theory for Relational Databases(关系型数据库)

本文摘要: 函数依赖(FD)是关系数据库中描述属性间约束的重要概念,X→Y表示X属性集决定Y属性集。文章详细介绍了FD的特性,包括右侧拆分规则(X→A1A2...An等价于多个X→Ai)、超键与候选键的定义(能函数决定所有属性的最小集合),以及通过闭包算法推导隐含FD的方法。重点讨论了BCNF和3NF范式分解:BCNF要求每个FD的左侧必须是超键,而3NF放宽条件允许右侧是主属性。文章通过酒馆数据库案例演示了BCNF分解过程,并比较了两种范式在保持无损连接和依赖保留方面的差异。最后简要提及2NF要求非主属性

2025-05-24 10:49:51 676

原创 Entity-Relationship Model(实体-关系模型)

E/R模型(实体-关系模型)用于数据库模式设计,通过实体关系图(E/R图)直观展示数据库结构。实体集表示相似实体的集合,属性为实体的简单值,关系集则连接多个实体集。E/R图通过矩形、椭圆和菱形分别表示实体集、属性和关系。关系类型包括多对多、多对一和一对一,通过箭头表示关系的多重性。E/R模型还支持子类、弱实体集和键的设计,子类继承超类属性,弱实体集依赖其他实体集的键来唯一标识。设计时应避免冗余,合理选择实体集和属性,并限制弱实体集的使用。最终,E/R设计可转换为关系数据库设计,实体集和关系分别映射为表和关系

2025-05-21 15:27:48 675

原创 The Worlds of Database Systems

英文版的ppt复习

2025-05-20 08:13:30 941

liunx文件和用户管理

liunx文件和用户管理

2025-06-20

Java-KMeans算法-课堂实验

java源文件

2025-04-14

数据结构-C语言描述(顺序表、链表)

水一下学校的实验报告,注释没有认真写,勿喷。

2024-04-01

空空如也

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

TA关注的人

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