自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 全网最细vector精讲:从接口使用到迭代器失效、模拟实现,C++面试必看

本文深入解析C++ STL中的vector容器,从基础使用到核心实现全面覆盖。首先介绍vector作为动态数组的重要性及其在编程中的广泛应用场景。详细讲解vector的构造方式、迭代器遍历、容量操作和增删查改接口,重点剖析扩容机制及优化方法。特别强调迭代器失效问题,分析扩容和erase操作导致的失效场景及正确处理方法。通过模拟实现vector的核心功能,包括三指针管理、深拷贝reserve和push_back等关键操作,揭示底层实现原理。最后总结vector高频面试考点,帮助开发者掌握这一必备容器。全文兼顾

2026-04-07 17:45:29 10

原创 从入门到精通:前缀和算法全解析,5道经典题吃透核心思想

前缀和算法是一种高效处理区间查询问题的技巧,通过预处理将查询时间优化到O(1)。本文系统讲解了一维和二维前缀和的核心原理,并通过5道经典题目深入解析其应用: 一维前缀和模板题:用s[r]-s[l-1]快速计算区间和 二维前缀和矩阵题:基于容斥原理处理子矩阵和 LeetCode 724:利用前缀和寻找数组中心下标 LeetCode 238:结合前缀积和后缀积计算除自身外的乘积 关键点包括:下标从1开始处理边界、使用long long防止溢出、二维情况下的容斥原理应用。前缀和算法可扩展性强,适合高频查询场景,是

2026-04-07 17:35:32 111

原创 硬核图解红黑树|从原理到C++完整实现,吃透面试高频考点

红黑树是一种高效的平衡二叉搜索树,通过颜色约束实现近似平衡,保证操作稳定在O(logN)级别。本文详细解析了红黑树的核心规则、平衡原理、与AVL树的对比差异,并提供了完整的C++实现代码。重点讲解了插入操作的三种处理情况:当叔叔节点为红时只需变色;同侧时单旋+变色;异侧时双旋+变色。红黑树凭借较少的旋转次数和良好的平衡性,成为Java HashMap、C++ STL等工程实践中的首选数据结构,特别适合频繁增删的场景。文章包含可直接运行的代码示例,帮助读者彻底掌握这一面试高频考点。

2026-04-07 17:29:37 106

原创 从三道经典二分题,彻底搞懂「二分查找」的两种核心写法

本文系统讲解了二分查找的两种核心模板及其应用场景。通过LeetCode三道经典题目(平方根计算、搜索插入位置、山脉数组峰顶查找),详细拆解了左闭右闭和左闭右开两种区间定义的实现差异,重点分析了向上取整避免死循环的技巧。每种模板都配有完整代码和关键细节说明,帮助读者掌握边界条件处理、循环终止判断等易错点,彻底吃透二分查找算法。

2026-04-06 16:01:20 390 1

原创 C++ STL 核心:string 从入门到精通(面试+源码+OJ实战)

本文全面解析C++ STL中的string类,从基础使用到底层实现。首先对比C风格字符串的不足,介绍string的优势;详细讲解构造函数、容量操作、遍历方法等核心接口;深入分析VS和GCC下的底层实现差异(SSO短字符串优化与COW写时拷贝);重点剖析深浅拷贝问题及现代写法解决方案;提供可直接手写的模拟实现代码;最后附赠高频OJ题目及解答。文章涵盖面试必备知识点,帮助读者从使用到原理全面掌握string,适合C++开发者和面试准备者。

2026-04-06 15:38:21 610

原创 吃透STL:C++开发者必须掌握的标准模板库全解析

本文全面解析C++标准模板库(STL),从定义、版本、六大组件到学习路径。STL是C++核心组件,包含容器、算法、迭代器等,基于泛型编程思想。文章对比HP原始版、P.J.版、RW版和SGI版等实现版本,推荐以SGI STL为学习标准。详细拆解容器、算法、迭代器、仿函数、配接器和空间配置器六大组件,强调STL在笔试、面试和工作中的重要性。提出侯捷的STL学习三境界:能用、明理、能扩展,建议从基础使用到底层源码循序渐进学习。STL是C++开发者必须掌握的核心技能,理解其设计哲学能写出更高效健壮的代码。

2026-04-06 15:13:00 352

原创 [特殊字符]C++模板初阶通关:泛型编程核心,告别冗余代码!

【摘要】C++模板是泛型编程的核心工具,能有效解决代码冗余问题。文章从实际痛点出发,通过Swap函数案例展示了模板的价值:只需编写一次通用代码即可适配所有类型。重点解析了函数模板的原理(编译器根据实参类型生成对应函数)和两种实例化方式(隐式/显式),并强调模板不支持自动类型转换的特性。类模板部分以Stack为例,说明如何构建通用容器,提醒注意类模板实例化的特殊语法。文章最后总结了模板的核心知识点和常见避坑指南,指出模板是STL库的基石,掌握模板对理解现代C++至关重要。全文兼顾理论与实战,适合C++学习者巩

2026-04-05 15:55:19 360

原创 [特殊字符]C/C++内存管理深度解剖:从内存布局到new/delete底层,吃透面试必考核心

摘要:本文深度解析C/C++内存管理核心知识,从内存五大分区(栈、堆、数据段、代码段、内存映射段)开始,详解变量存储位置判断。对比C语言malloc/calloc/realloc/free与C++ new/delete的本质区别,重点剖析new/delete底层通过operator new/delete实现对象生命周期管理。提供malloc/free与new/delete的全面对比表,介绍定位new技术,并给出内存安全编程的黄金法则。最后总结内存管理核心要点,帮助开发者彻底掌握内存分配机制,避免内存泄漏和程

2026-04-05 15:53:30 631

原创 彻底搞懂AVL树:从原理到旋转,再到C++完整实现(超详细)

AVL树是最早发明的自平衡二叉搜索树,由两位科学家在1962年提出,它在二叉搜索树的基础上加入了严格平衡限制,避免树退化成链表。AVL = 严格平衡BST,高度差 ≤1BF = 右高 − 左高,必须是 -1/0/1插入后向上更新BF,出现±2则旋转4种旋转:左左→右旋、右右→左旋、左右→左右旋、右左→右左旋效率稳定O(logN)优点:查找极快;缺点:旋转频繁、实现略复杂。

2026-04-03 17:22:44 520

原创 C++ 类和对象(下)核心总结

这一篇是,全是面试高频、工程实用点,我给你整理成的版本,直接背会就能通关。

2026-04-03 16:50:17 311

原创 C++ 类和对象(中):6大默认成员函数彻底吃透,构造/析构/拷贝/赋值全通关

本文深入讲解C++类的6个默认成员函数,重点剖析构造、析构、拷贝构造和赋值重载四大核心功能。通过特征说明、代码示例和易错点分析,详细阐述了构造函数实现对象自动初始化、析构函数负责资源释放、拷贝构造实现对象克隆以及赋值重载处理对象间赋值的关键机制。文章还介绍了运算符重载、const成员函数等进阶用法,并总结不同场景下需要自定义实现的规则,最后提供高频面试题帮助巩固知识点。掌握这些内容是深入理解C++面向对象编程的关键。

2026-04-02 19:22:32 739 1

原创 C++ 类和对象(上):从0到1,彻底搞懂类、封装与this指针

本文介绍了C++类和对象的基础知识,包括类的定义、访问限定符、类域、实例化、对象大小计算和this指针等核心概念。重点讲解了封装如何通过public/private控制成员访问权限,类域作用域解析符的使用,以及this指针作为成员函数隐含参数的工作原理。通过对比C语言实现方式,展示了C++面向对象编程在代码组织和安全性上的优势。文章还包含常见面试题解析,帮助读者深入理解类与对象的关键特性。

2026-04-02 19:20:04 355

原创 C++ STL map 超详细使用教程(含完整代码)

本文详细介绍了C++ STL中的map容器,包括其基本概念、构造函数、遍历方式、插入方法、查找与删除操作。重点讲解了map强大的operator[]功能,可用于查找、插入和修改键值对。文章还涉及降序排列、multimap使用以及map的核心特性总结。map基于红黑树实现,具有自动排序和去重功能,适合映射、统计和查找场景。通过示例代码展示了map的各种用法,帮助开发者全面掌握这一重要容器。

2026-04-01 21:18:49 455

原创 # C++ STL —— set 超详细使用教程

红黑树(平衡二叉搜索树)自动排序(默认升序) + 自动去重增删查:(O(logN))双向迭代器,遍历为中序遍历,所以有序key 不可修改(修改会破坏树结构)set:自动去重、默认升序、key 不可改、(O(logN)) 操作multiset:可重复,其他与 set 一致常用场景:去重、排序、快速查找、判重不能修改元素,只能插入/删除/查找遍历有序,因为是红黑树中序遍历。

2026-04-01 21:16:01 302

原创 LeetCode 高频算法题:随机链表复制 + TopK 高频单词

本文解析了两道高频算法题:随机链表复制和前K个高频单词。对于随机链表复制,通过哈希表建立新旧节点映射关系,实现深拷贝并正确处理random指针,时间复杂度O(n)。前K个高频单词问题采用统计词频+自定义排序的策略,先按频率降序、再按字典序升序排列,时间复杂度O(n log n)。这两道题分别考察了链表操作和哈希统计与排序能力,是面试中的经典题型,掌握其核心思路和实现细节对算法面试至关重要。

2026-03-31 20:11:52 335

原创 C++入门核心知识点全解析:从基础语法到核心特性

本文系统介绍了C++入门核心知识点,包括基础语法和关键特性。主要内容涵盖:1)C++基础程序结构与编译运行方式;2)命名空间的三种使用方案及其解决命名冲突的原理;3)C++特有的输入输出流机制及效率优化方法;4)函数缺省参数的设计规则与使用场景;5)函数重载的实现原理与多态特性。通过代码示例和原理讲解,帮助读者快速掌握C++的核心语法特性,为后续深入学习打下坚实基础。

2026-03-31 18:27:10 487

原创 二叉搜索树(BST):概念、实现与应用全解析

二叉搜索树(BST)是一种基于左小右大规则的高效数据结构,是STL中map/set等容器的底层实现。文章详细解析了BST的核心概念、性能分析和基本操作。BST在最优情况下(完全二叉树)检索效率为O(logN),最差情况(单支树)退化为O(N)。相比二分查找,BST支持动态数据操作且无需连续存储。核心操作包括插入、查找和删除,其中删除操作根据结点子树情况分为四种处理方式。文章还提供了纯Key版的C++实现代码,包含结点结构定义和增删查方法。BST通过链式存储和特定规则,实现了高效的数据检索与管理。

2026-03-30 12:37:47 330

原创 LeetCode 经典算法题合集:二分查找 + 数组交集 + 环形链表

本文整理了4道经典算法题,涵盖二分查找、数组交集和环形链表检测。内容包括: 704题基础二分查找,详解区间定义、中点计算和收缩逻辑 34题进阶二分查找,通过两次二分定位重复元素的起止位置 349题数组交集,利用set去重和双指针高效求解 142题环形链表检测,提供哈希表和快慢指针两种解法 每道题都包含题目描述、核心思路、代码实现和关键细节分析,适合面试准备和算法学习。

2026-03-30 12:28:13 508

原创 C++多态详解:从概念到底层原理,一篇吃透

本文深入解析C++多态机制,从概念到底层实现全面剖析。多态分为编译时多态(函数重载、模板)和运行时多态(继承+虚函数)。运行时多态通过基类指针/引用调用虚函数实现,需满足继承关系、虚函数重写和基类指针调用三大条件。文章详细讲解了虚函数重写规则、override/final关键字、析构函数重写的必要性,并通过买票示例展示多态应用。底层原理部分揭示了虚函数表指针和虚函数表的工作机制,说明多态通过动态绑定实现。最后对比了重载、重写和隐藏的区别,帮助开发者彻底掌握C++多态技术。

2026-03-29 15:41:41 545 1

原创 滑动窗口经典三题:从异位词到减零问题 ✨

本文系统介绍了滑动窗口算法的三类经典应用:固定窗口(438.字母异位词)、可变窗口(904.水果成篮)和问题转换(1658.减零操作)。通过分析每题的解题思路、代码实现和关键细节,总结出滑动窗口的核心在于用线性时间遍历替代暴力枚举,通过窗口扩展与收缩高效求解子问题。文章还提供了通用解题模板和题型对比表,帮助读者快速掌握该算法的应用场景和实现技巧。掌握这三类题型即可应对大多数滑动窗口相关的算法问题。

2026-03-29 15:32:20 301

原创 C语言控制台贪吃蛇项目实战:从设计到完整实现

本文介绍了使用C语言实现控制台贪吃蛇游戏的完整过程。项目采用单链表存储蛇身节点,结合Windows控制台API实现精准坐标控制,包含地图绘制、蛇身移动、食物生成、碰撞检测等核心功能。文章详细讲解了技术选型、数据结构设计、Win32 API应用和游戏逻辑实现,通过模块化开发完成了一个功能完整的控制台贪吃蛇游戏。该项目适合C语言初学者巩固基础语法,学习链表应用,并初步接触游戏开发基础流程。

2026-03-08 18:44:53 703 3

原创 LeetCode 滑动窗口专题:两道经典题解(C++版)

本文介绍了LeetCode滑动窗口专题的两道经典题目:无重复字符的最长子串和最大连续1的个数III。第一题通过维护无重复字符的窗口,使用数组模拟哈希表记录字符出现次数;第二题转化为寻找最多包含k个0的最长子数组。两题均采用"扩张-收缩"的滑动窗口策略,时间复杂度为O(n)。文章包含题目分析、核心思路和带注释的C++代码实现,并总结了滑动窗口的思想框架,强调通过双指针动态调整窗口边界来高效解决问题。

2026-03-08 18:02:07 501 1

原创 LeetCode 经典算法题解(C++版)

本文整理了两道LeetCode经典算法题解:18.四数之和和209.长度最小的子数组。四数之和采用排序+双指针+去重策略,将时间复杂度降至O(n³),并处理数值溢出问题;长度最小的子数组使用滑动窗口技术,在O(n)时间内找到满足条件的最小连续子数组。两题均提供完整C++代码及详细注释,适合直接学习与复现。四数之和适用于多数之和与组合去重问题,滑动窗口则擅长处理连续子数组的最值问题。

2026-03-07 20:23:29 228 1

原创 C++ 继承全解:从基础语法到菱形继承与设计实践

本文系统梳理了C++继承的核心概念与应用实践。首先阐述了继承的本质是类级别的代码复用,详细解析了三种继承方式的成员访问规则,强调public继承为工程首选。文章重点讲解了派生类默认成员函数的调用顺序、作用域隐藏规则,以及继承与友元、静态成员的关系。针对多继承场景,深入分析了菱形继承问题及其虚继承解决方案。最后对比了继承与组合的设计优劣,指出应优先使用组合,仅在满足is-a关系或多态需求时使用继承。掌握这些继承知识对理解C++多态和大型项目类设计至关重要。

2026-03-07 18:39:29 492 1

原创 双指针算法实战:从 LeetCode 四题吃透对撞指针思想(C++)

本文通过四道LeetCode经典题目详细讲解了对撞指针算法的应用。首先介绍了盛最多水容器问题,展示了如何通过移动短板来优化计算;其次在有效三角形个数问题中,演示了排序后固定最大边并使用对撞指针的高效解法;接着在查找价格目标值问题中,利用有序数组特性快速定位解;最后在三数之和问题中,展示了固定一数、双指针找另外两数并处理重复解的方法。四道题目涵盖了从简单到复杂的对撞指针应用场景,时间复杂度均为O(n)或O(n²),空间复杂度主要为O(1),是面试必备的高效算法技巧。

2026-03-03 17:09:02 705 2

原创 双指针算法实战(一):三道经典题吃透双指针思想(C++)

本文通过三道经典LeetCode题目(283.移动零、1089.复写零、202.快乐数)讲解双指针算法的核心应用。使用快慢指针实现原地移动零元素并保持顺序,逆向双指针解决复写零时的数据覆盖问题,以及快慢指针判断快乐数的循环特性。文章总结了三类双指针技巧(快慢指针、左右指针、逆向指针)的适用场景,强调其在O(n)时间、O(1)空间复杂度下的高效性,适合算法学习、面试准备和刷题总结。

2026-03-03 15:48:13 460

原创 数据结构之顺序表 【超详细!】(文末附源码)

本文介绍了顺序表的定义、分类及其基本操作。顺序表是线性表的顺序存储结构,底层实现为数组,分为静态和动态两种类型。文章重点讲解了动态顺序表的实现,包括初始化、销毁、打印、头插/尾插、头删/尾删等核心操作。通过三个文件(Sqlist.h、SqList.c、test.c)组织代码,详细展示了每种操作的实现细节。顺序表虽能快速访问元素,但存在空间利用率问题,为后续介绍链式存储结构埋下伏笔。

2025-11-23 16:41:21 539

原创 C语言项目游戏——扫雷游戏的实现(附源代码)

本文介绍了使用C语言实现扫雷游戏的完整过程。游戏采用控制台界面,通过菜单选择开始或退出游戏,使用9×9的棋盘布局,默认设置10个雷。设计上采用两个11×11的二维数组分别存储雷的位置信息和玩家可见信息,通过字符'1'和'0'表示雷与非雷。文章详细讲解了各功能模块的实现,包括游戏初始化、棋盘打印、随机布雷、统计周围雷数以及排雷逻辑等核心算法。代码采用多文件组织,分为test.c、game.c和game.h三个文件,实现了游戏的主循环、菜单显示、布雷和排雷等功能。最后,当玩家踩雷或成功排雷时,会显示相应结果并结

2025-10-28 16:14:17 840 1

空空如也

空空如也

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

TA关注的人

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