自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(65)
  • 资源 (1)
  • 收藏
  • 关注

原创 数据结构之排序算法(中):冒泡排序与快速排序,从相邻交换到工程级优化

本文系统对比了冒泡排序与快速排序的核心思想与实现细节。冒泡排序通过相邻元素交换逐步将最大值“上浮”,时间复杂度为O(n²),但具有稳定性与提前终止优化,适用于教学或小规模有序性检测。快速排序基于分治与划分,采用挖坑法、Lomuto、Hoare等不同策略,平均时间复杂度O(nlogn),最坏O(n²),不具稳定性。为提升性能,引入随机化、三数取中选基准、三路划分处理重复元素,并结合内省排序动态切换算法,兼顾效率与最坏情况保障。核心启示:算法应根据输入特征自适应选择策略,体现工程思维的进阶。

2026-09-19 15:01:15 804 31

原创 数据结构之排序算法(上):从评价指标到插入、希尔、选择与堆排序

本文系统介绍排序基础概念及四种核心排序算法:直接插入排序(稳定、适合小规模有序数据)、希尔排序(改进插入排序,提升效率)、简单选择排序(交换少但不稳定)和堆排序(最坏O(nlogn),原地但不稳)。重点分析各算法思路、时间/空间复杂度与稳定性,并通过性能测试代码对比实际表现。强调排序在工程中的应用价值,如多关键字排序依赖稳定性,同时指出算法选择需结合数据特征与需求。

2026-09-16 17:18:51 522 23

原创 嵌入式(二): ARM、意法半导体与 STM32:嵌入式产业生态是怎样形成的?

本文梳理了从终端需求到STM32选型的嵌入式产业链:终端产品(如手机、汽车、家电)驱动芯片需求,ARM通过IP授权模式提供CPU核心,意法半导体基于ARM架构设计MCU(如STM32系列),再由终端企业或培训机构集成至主板。其中,STM32F103ZET6因引脚丰富、生态成熟,成为教学主流。整个链条涵盖ARM生态、SoC集成、MCU选型与供应链协同,体现嵌入式产业分工协作的本质。

2026-09-13 15:52:49 384 5

原创 嵌入式(一):嵌入式历史与计算机基础:从 ENIAC 到 MCU 四大技术方向

学习嵌入式,不能一开始就只盯着开发板、寄存器和代码。面对一个拥有大量细分方向的行业,首先要建立宏观认知,也就是理解这个行业为什么出现、靠什么力量发展、形成了怎样的产业生态。只有先建立“世界观”,后面学习 GPIO、时钟、串口和定时器时,才能知道这些知识在整个技术体系中的位置。嵌入式系统本质上是计算机发展的一个分支。因此,要理解嵌入式的历史与生态,必须先理解计算机是如何诞生和发展的。故事可以从 ENIAC 讲起。1946 年 2 月 14 日,ENIAC 作为早期电子计算机的代表公开亮相。它由美国宾夕法尼亚大

2026-09-12 16:18:50 330 23

原创 c++语言原理与实践(五):内存管理

本文系统讲解C++内存分布与管理机制,涵盖栈、堆、数据段、代码段等内存区域的划分,解析全局变量、局部变量、静态变量等存储位置。对比C语言malloc/free与C++ new/delete的差异,重点揭示new/delete在自定义类型中自动调用构造/析构函数的底层原理,阐明operatornew/operatordelete的实现机制,并警示混用malloc/free与new/delete可能导致的未定义行为与资源泄漏问题。

2026-09-12 14:21:34 133 29

原创 C++语言原理与实践(四):类与对象(下)

本文深入探讨C++核心特性:构造函数初始化列表的使用与顺序、类型转换机制(含explicit关键字)、static成员变量与函数的特性与访问规则、友元函数与类的突破封装能力、内部类的定义与作用,以及匿名对象的应用场景和编译器优化原理。重点强调初始化列表优先于构造体、引用/const/无默认构造类成员必须用初始化列表、静态成员共享性与无this指针、友元破坏封装但提升灵活性、匿名对象临时性及编译器对拷贝操作的优化策略,全面揭示C++面向对象编程的底层机制与高效实践。

2026-09-09 15:45:16 311 26

原创 Linux系统之网络基础概念(下)

• 发送主机通常将发送缓冲区中的数据。

2026-08-29 17:06:13 253 33

原创 Linux系统之网络基础概念

摘要 本文系统介绍了计算机网络的发展历程与协议概念。第一部分阐述了计算机网络从独立模式到广域网的演进过程,重点描述了局域网和广域网的组成结构。第二部分深入解析了协议概念:1)通过生活实例说明协议是通信双方约定的规则;2)强调标准协议对异构设备互联的重要性;3)详细讲解TCP/IP五层模型(物理层、数据链路层、网络层、传输层、应用层)及各层功能;4)指出协议本质是结构化的数据类型约定,通过分层实现解耦,使不同操作系统设备能相互通信。文章通过图示和代码示例生动展现了协议如何确保通信双方对数据格式的理解一致。

2026-08-20 20:42:32 417 29

原创 MySQL数据库原理与实践(五):内置函数

本文系统介绍了MySQL常用内置函数,包括日期函数(now()、date_add()、datediff()等)、字符串函数(concat()、substring()、replace()等)、数学函数(abs()、rand()、mod()等)及其他实用函数(user()、md5()、ifnull())。通过具体案例演示了这些函数在日期处理、字符串操作、数值计算和数据转换中的应用场景,如计算日期差值、字符串拼接、大小写转换、随机数生成等。掌握这些内置函数能有效简化SQL语句,提高数据处理效率,为数据查询、统计分

2026-08-02 21:17:37 357 44

原创 MySQL数据库原理与实践(四):基本查询

本文介绍了MySQL数据库的基本操作,包括表的增删改查、条件查询、排序、分页以及聚合函数的使用。主要内容包括:1.表的创建、插入和更新操作;2.基本查询语法(全列查询、指定列查询、表达式查询、别名设置);3.where条件筛选(比较运算符、逻辑运算符、范围查询、模糊查询);4.结果排序(order by)和分页(limit);5.聚合函数(count、sum、avg等)和分组统计(group by);6.删除操作(delete和truncate的区别)。文中通过大量实例演示了各种SQL语句的用法,并强调了执

2026-07-28 16:08:10 581 31

原创 数据结构之堆

本文系统介绍了堆数据结构及其应用,主要内容包括:1. 堆的基本概念:作为完全二叉树,堆分为大堆(父节点≥子节点)和小堆(父节点≤子节点),通常用数组实现以优化空间利用和访问效率。2. 核心操作实现:重点讲解了插入时的向上调整和删除堆顶时的向下调整算法,通过动态数组管理堆空间,保持堆的性质不变。3. 建堆方法:比较了向上建堆(O(nlogn))和向下建堆(O(n))的时间复杂度差异。4. 堆排序应用:通过建大堆和反复交换堆顶元素实现升序排序。5. Top-K问题解决方案:使用大小为K的小堆高效筛选海量数据中的

2026-07-27 12:49:58 803 28

原创 硬核拆解:Linux 静态库从原理到实战

简单来讲,库是写好的现有的,成熟的,可以复用的代码,我们可以把它想象成一个装备齐全的工具箱,假设我们正在造一辆汽车时,我们并不需要从零开始去炼钢、做轮胎、造发动机,而是直接从仓库里把现成的轮胎和发动机拿过来组装,那么库就是提供给程序员的就是这些现成的零部件。现实中每个程序都要依赖很多基础的底层库,就比如说我们常用的printf,如果没有了库,那么每个程序员都要自己写printf的实现,这就会导致每个人printf实现的都不相同,所以为了方便写代码,世界上的顶级程序员就联合起来,编写了库,这样以后,

2026-07-24 16:42:05 753 37

原创 MySQL数据库原理与实践(三):表的约束

本文系统介绍了MySQL中表约束的概念与应用,重点讲解了8种核心约束及其使用场景:1. NOT NULL约束:强制字段非空,确保数据完整性 2. DEFAULT约束:为字段设置默认值,简化数据插入 3. COMMENT描述:为字段/表添加说明文档,提高可维护性 4. ZEROFILL属性:数值显示宽度不足时自动前补零 5. PRIMARY KEY主键:唯一标识记录(非空、唯一、单表唯一) 6. AUTO_INCREMENT自增长:自动生成递增值(需配合主键/索引) 7. UNIQUE唯一键:保证字段业务唯一

2026-07-24 16:38:50 849 45

原创 MySQL数据库原理与实践(二):数据类型

本文介绍了MySQL中常用的数据类型,包括数值类型(TINYINT、INT、BIT)、小数类型(FLOAT、DECIMAL)、字符串类型(CHAR、VARCHAR)、日期时间类型(DATE、DATETIME、TIMESTAMP)以及枚举和集合类型(ENUM、SET)。重点分析了各类型的存储范围、语法格式和使用场景,并通过实例演示了数据越界处理、精度差异等特性。文中对比了CHAR和VARCHAR的定长/变长特性,解释了ENUM和SET的数值存储原理,特别强调了SET类型的位图查询方法。整体上,文章系统梳理了M

2026-07-20 17:47:56 995 21

原创 线程同步与线程互斥(中)

本文介绍了线程同步中的条件变量及其应用,重点讲解了生产者-消费者模型。主要内容包括:1. 线程同步概念:通过条件变量让线程按照特定顺序访问临界资源,避免饥饿问题。2. 条件变量工作原理:当条件不满足时线程释放锁并等待;条件变化时通知等待线程。3. 生产者-消费者模型:通过阻塞队列解耦生产者和消费者,支持并发操作。4. 关键实现细节:使用互斥锁保护共享资源,条件变量实现等待和唤醒机制,注意伪唤醒问题需用while循环判断条件。文章还提供了基于阻塞队列的生产者-消费者模型代码实现示例。

2026-07-16 17:46:44 326 13

原创 线程同步与线程互斥(上)

本文主要介绍了线程互斥的原理和锁的概念。首先解释了共享资源、临界资源、临界区等基本概念,以及互斥的必要性。通过代码示例演示了多线程访问共享资源时可能出现的数据不一致问题(如票数减为负数),并分析了原因:非原子操作和线程切换导致。接着介绍了Linux提供的互斥量(mutex)接口,包括初始化、加锁、解锁和销毁操作,并通过修改后的代码展示了如何正确使用互斥锁来保护临界资源。最后探讨了锁的实现原理,说明其原子性保证机制,并提出了一种锁的简单封装方法,采用RAII风格管理锁的生命周期。全文重点阐述了线程互斥的必要性

2026-07-10 13:43:48 1485 19

原创 线程概念与控制(中)

本文介绍了Linux线程控制的基本概念与操作,主要内容包括:1. 线程库引入:Linux通过pthread库在用户层封装线程接口,底层使用轻量级进程(LWP)实现。通过pthread_create创建线程时需链接-lpthread库。 2. 线程控制接口: 线程等待:pthread_join获取线程返回值,需处理退出方式(return、pthread_exit或pthread_cancel)。 线程终止:可通过函数return、pthread_exit或pthread_cancel实现,注意资源释放问题。

2026-06-28 16:43:57 760 17

原创 线程概念与控制(上)

本文系统探讨了Linux线程与进程的核心概念及其底层实现机制。首先从资源视角区分进程(资源分配单位)与线程(CPU调度单位),揭示Linux通过轻量级进程模拟线程的本质。重点剖析了分页存储管理:详细阐述物理内存以4KB页框为单位的管理方式,深入解析多级页表(页目录+页表)的地址转换机制,包括TLB快表的作用和缺页中断处理流程。通过虚拟地址空间管理(mm_struct/vm_area_struct)阐明资源分配本质是地址空间划分。最后对比线程与进程特性:分析线程在创建开销、切换效率等方面的优势,以及存在的健壮

2026-06-27 19:19:57 2121 18

原创 Linux信号机制(终)

本文围绕操作系统核心概念展开:1. 用户态与内核态:解释了进程地址空间的划分(0-3GB用户空间/3-4GB内核空间),通过CPU的CS寄存器权限位实现状态切换(CPL=0内核态/CPL=3用户态),内核空间由所有进程共享但受权限保护。2. 可重入函数:通过链表插入示例说明函数重入可能导致的数据错乱问题,强调信号处理函数应使用只访问局部变量的可重入函数。3. volatile关键字:演示编译器优化可能导致信号修改的全局变量未被及时读取,volatile强制每次从内存读取最新值。4. SIGCHLD信号:分析

2026-06-25 15:47:54 489 11

原创 Linux信号机制(下)

本文深入解析了操作系统的信号捕获机制和运行原理。信号处理并非即时完成,而是由内核在返回用户态前检查并递达,通过修改执行现场让信号处理函数以用户态运行。操作系统通过四种主要入口获得执行权:硬件中断(如键盘输入)、时钟中断(实现进程调度)、异常(如除零错误)和软中断/系统调用。其中,硬件中断实现了外设主动通知机制,时钟中断周期性触发使内核能维护系统状态,而系统调用通过中断指令和调用表实现功能服务。这些机制共同构成了操作系统响应外部事件、管理硬件资源和提供服务的基础架构。

2026-06-18 17:08:15 421 14

原创 Linux信号机制(中)

本文深入探讨了Linux系统中的信号机制,重点分析了信号产生和保存的机制。在信号产生方面,详细讲解了通过alarm函数实现软件条件触发的信号产生方式,并演示了周期性信号处理的实现方法。在信号保存方面,系统阐述了信号从产生到处理的完整生命周期,包括阻塞、未决和递达三种状态,以及对应的三张核心表:block表(阻塞信号集)、pending表(未决信号集)和handler表(信号处理函数表)。通过代码实验验证了信号屏蔽与解除的过程,并解释了SIGKILL和SIGSTOP信号的特殊性。

2026-06-13 18:13:59 596 22

原创 Linux信号机制(上)

本文介绍了Linux信号的基本概念与产生方式。信号是操作系统向进程发送的异步事件通知机制,类似于生活中的各种提醒信号。主要内容包括:1. 信号概念:通过生活类比解释信号是异步事件通知,进程可以预先定义处理方式(默认、自定义或忽略)。2. 信号产生方式:- 键盘输入(如Ctrl+C产生SIGINT)- 系统调用(kill、raise、abort等)- 硬件异常(如除零错误产生SIGFPE,段错误产生SIGSEGV)3. 信号处理原理:信号产生后被记录在进程PCB的位图中,由操作系统在合适时机递送给进程处理。

2026-06-07 18:14:29 658 27

原创 vibe coding之opencode的使用

随着 AI 编程工具的发展,Vibe Coding 正在改变传统的软件开发模式。本文以开源编程代理 OpenCode 为例,介绍其安装配置、模型切换、Plan 与 Build 工作模式、AGENTS.md 初始化机制及常用命令的使用方法。同时结合 C++ 数据结构项目,演示如何利用 OpenCode 与 Google Test(gtest)完成单元测试的生成、运行与验证。通过本文的学习,读者能够快速掌握 OpenCode 的基本使用流程,并了解 AI 编程代理在代码开发、测试与项目管理中的实际应用。

2026-06-06 13:48:16 537 17

原创 数据结构之单链表

本文系统介绍了单链表的基础概念与实现方法,主要内容包括:1. 单链表概念:通过节点指针链接实现非连续存储,相比顺序表具有按需申请空间和插入删除高效(O(1))的优势;2. 核心操作实现:详细讲解了初始化、查找(按值和按索引)、插入(头插/尾插/任意位置)、删除(头删/尾删/指定位置)等操作的实现逻辑与注意事项,重点分析了指针操作的顺序问题;3. 带头节点设计:解释了使用哨兵位头节点避免二级指针的必要性;4. 完整代码示例:提供了各操作的C语言实现及测试用例,强调内存管理和边界条件处理。

2026-06-04 19:10:32 435 21

原创 文件操作全解析:打开关闭读写技巧

本篇目标:1.文件的作用与什么是文件2. 学会文件的打开,关闭 ,读写的操作3. ⽂件读取结束的判定4. 知道文件缓冲区的存在及作用作用: 如果没有文件,我们写的程序数据是存储在电脑的内存中,如果程序退出,内存回收,数据就丢失 了,等再次运行程序,是看不到上次程序的数据的,所以要想将数据进行持久化的保存,我们就可以使用⽂件进行操作。什么是文件?磁盘(硬盘)上的文件是文件,然而在程序设计中,我们⼀般谈的⽂件有两种:程序文件、数据文件,以下是关于文件的具体分类。程序文件包括源文件(后缀为.c),目标文件(win

2026-05-31 17:54:08 334 21

原创 数据结构之顺序表

本文详细介绍了动态顺序表的实现方法。顺序表采用动态内存分配,通过malloc申请空间,并用realloc进行扩容。文章阐述了顺序表的核心操作:初始化、插入(头插/尾插/指定位置插入)、删除(头删/尾删/指定位置删除)、查找(按位置/按值)等功能的实现原理和代码示例。重点讲解了插入和删除操作时的元素移动逻辑,以及扩容策略(通常按2倍扩容)。同时提供了顺序表的基本接口如打印、判空、获取元素个数等,并通过测试代码验证了各项功能的正确性。所有操作都通过指针传递顺序表结构体,确保数据一致性。

2026-05-30 20:15:41 375 17

原创 MySQL数据库原理与实践(一):MySQL安装与基础操作

本文详细介绍了在CentOS系统下安装MySQL数据库的完整步骤,包括获取官方yum源、版本匹配、安装配置及服务启动等关键环节。同时讲解了数据库的核心概念,通过对比文件存储方式,突出数据库在查询速度、安全性、存储效率和并发控制方面的优势。文章还系统梳理了数据库基础操作,涵盖库表创建、修改、删除以及字符集设置等实用技能,并提供了可视化操作示意图,帮助读者快速掌握MySQL的基本使用方法。从环境搭建到实际操作,形成了一套完整的MySQL入门指南。

2026-05-24 17:28:58 553 22

原创 进程间通信的基本概念(上)

本文介绍了进程间通信中的匿名管道机制。主要内容包括:1. 环境准备:从CentOS切换到Ubuntu系统,配置VSCode远程连接Linux服务器;2. 进程通信原理:解释进程隔离导致通信需求,介绍POSIX标准统一接口;3. 匿名管道详解:通过fork创建父子进程共享管道文件描述符,实现单向通信;4. 代码示例:演示管道创建、读写操作及五种特性验证;5. 管道特性总结:血缘关系限制、单向通信、进程生命周期绑定、同步机制和字节流传输。文章通过理论结合实践,帮助读者掌握匿名管道的核心原理和实际应用。

2026-05-23 17:57:02 527 22

原创 硬核拆解:Linux动态库从原理到实战

此时在执行,就成功了。4.

2026-05-10 14:17:20 689 18

原创 进程控制之进程等待

本文介绍了Linux系统中进程等待的必要性及相关函数wait和waitpid的使用。重点讲解了进程等待的三种方式:1)阻塞等待(wait和waitpid默认模式),父进程会一直等待子进程退出;2)非阻塞等待(WNOHANG选项),父进程轮询检查子进程状态,期间可以执行其他任务;3)状态参数status的解析方法,包括WEXITSTATUS获取退出码和WIFEXITED判断正常退出。通过代码示例演示了不同等待方式的特点和应用场景,帮助理解父进程如何正确处理子进程终止并回收资源。

2026-04-18 14:52:56 471 26

原创 进程之虚拟地址空间

以小李与小李为例:幼儿园里,小李不爱干净、小李小李爱干净,两人同用一张桌子,就在桌面正中间画了一条直直的线,把桌子分成左右两块区域,左边归小李、右边归小美,谁都不能越过线占对方的地方,也不能把脏东西弄到对方区域里,小李的桌子的开始到这条线就是小李的。

2026-04-10 13:48:22 427 24

原创 C++语言原理与实践(六):模板介绍与应用

在C++中,如果我们想要写一个关于int,double的交换函数,就需要这样写,但是我们发现这除了类型,两个函数高度的相似,虽然使用函数重载实现了,但也有一些坏处:<1>.代码复用率比较低,只要有新类型出现时,就需要我们自己增加对应的函数。<2>.代码的可维护性比较低,一个出错可能所有的重载均出错。那么能否告诉编译器一个模型,让编译器根据不同的类型利用该模型来生成代码呢?答案就是模板的出现。泛型编程:编写与类型无关的通用代码,是代码复用的一种手段。模板是泛型编程的基础。1.1.概念函数模板代表了一个函

2026-02-12 13:55:11 948

原创 C++语言原理与实践(七):string类的介绍与使用

的空白位置。

2026-02-05 17:45:00 1054 1

原创 C++语言原理与实践(三):类与对象(中)

<think>我们只需要根据用户提供的内容生成摘要,≤150字。内容是关于C++类默认成员函数(构造函数、析构函数、拷贝构造、赋值运算符重载等)的知识点。需要概括核心要点。注意摘要不宜太长,包含关键信息:默认成员函数、构造函数自动初始化、析构函数资源清理、拷贝构造与赋值重载的浅拷贝问题、深拷贝需求、const成员函数等。生成简洁中文摘要。</think>本文介绍了C++类的默认成员函数:构造函数(自动初始化)、析构函数(资源清理)、拷贝构造与赋值运算符重载,均需注意浅拷贝问题,必要时

2026-01-31 05:15:00 2222 20

原创 C++语言原理与实践(二):类与对象(上)

类名 对象名(参数1, 参数2...);class Datepublic://Init: 成员函数,用于给成员变量赋值_day = day;private://成员变量,这里仅仅是声明,不占实际内存空间int _year;int _month;int _day;int main()// --- 类的实例化 ---// 这一步在栈区为 d1 分配了空间(大小通常为 12 字节)// 此时d1已经存在,但内部的 _year 等是随机值Date d1;

2026-01-29 15:15:00 559 22

原创 C++语言原理与实践(一):C++入门基础知识

文章摘要: 本文系统介绍了C++基础核心语法,包括标准输入输出(cin/cout流操作)、命名空间(namespace)的定义与使用(解决命名冲突、作用域控制及展开方式)、缺省参数(全缺省与半缺省规则)、引用(别名特性、传参优势及与指针的区别)、函数重载(参数类型/数量/顺序差异)、nullptr关键字(替代NULL避免歧义)以及inline函数(编译期展开优化性能)。重点剖析了各语法的使用场景、易错点及底层逻辑(如引用与临时对象的关系、函数重载的编译原理),并通过代码示例对比C语言实现,突显C++在类型安

2026-01-26 01:30:00 1011 16

原创 Linux系统之网络基础概念

本文介绍了网络传输的基本流程,包括局域网通信原理、MAC地址和IP地址的作用、数据包封装和解包过程。重点分析了以太网通信中MAC地址的识别机制,以及数据从应用层到物理层的逐层封装和解包流程。文章通过类比教室点名和唐三藏取经等生动例子,解释了IP地址和MAC地址的区别:IP地址标识通信的起点和终点,保持不变;MAC地址则负责当前链路的交付,每经过路由器都会改变。最后展示了跨网络传输时数据包经过路由器的重新封装过程,说明了网络协议栈"后进先出"的特点。全文深入浅出地讲解了网络通信的核心概念和

2026-08-23 15:15:00 434 1

原创 数据结构之双链表

本文介绍了双向链表的结构与实现方法,重点对比了链表与顺序表的优缺点。双向链表通过在节点中增加前驱指针,解决了单链表查找前驱节点效率低的问题,并详细实现了初始化、插入、删除等核心操作接口。与顺序表相比,链表在插入删除已知位置节点时效率更高(O(1)),但不支持随机访问;顺序表则具有随机访问优势(O(1)),但插入删除需要移动元素。文中还特别说明了带头双向循环链表的结构优势,并通过代码演示了各种操作的具体实现,最后对两种存储结构的适用场景进行了总结:顺序表适合随机访问和尾部操作,链表更适合频繁的中间插入删除。

2026-07-11 15:32:30 839 19

原创 数据结构之栈

本文系统介绍了栈数据结构的基本概念、实现原理及代码实现。首先阐述了栈作为线性表的特性(后进先出LIFO),通过弹夹和羽毛球桶等生活实例进行类比。重点讲解了栈的顺序存储实现方式,包括静态和动态两种方案,详细说明了动态顺序栈的结构设计(包含top指针和capacity容量)。在代码实现部分,提供了完整的接口函数:初始化、入栈(带扩容检查)、出栈(带空栈检测)、获取栈顶元素、销毁栈等核心操作,并配有示意图辅助理解。最后通过测试代码验证了栈的基本功能,包括多元素入栈、出栈顺序及异常处理。

2026-06-11 14:38:11 593 18

原创 C++IO库的超详细讲解

本文系统介绍了C++中的IO流操作,主要包括:1. IO流状态管理:讲解goodbit、eofbit、failbit、badbit四种状态标志及其处理方法,演示如何通过cin.clear()恢复流状态。2. 输出缓冲区机制:解释缓冲区的必要性及刷新条件,包括手动刷新(std::endl/std::flush)和系统强制刷新等情况,通过代码示例验证缓冲行为。3. 标准IO流:分析cin/cout等标准流的特性,演示流状态转换和错误处理方法。4. string流:介绍ostringstream/istrings

2026-05-03 18:55:40 608 11

空空如也

空空如也

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

TA关注的人

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