- 博客(11)
- 收藏
- 关注
原创 C++并查集和图
并查集是一种用于处理不相交集合的高效数据结构,支持合并和查找操作。它通过数组存储父节点关系,实现集合的快速合并(Union)和根节点查找(Find)。优化方法包括路径压缩和按大小合并,可进一步提升效率。图是由顶点和边组成的非线性结构,分为无向/有向、加权/无权等类型,具有度、路径、连通性等核心概念。图的存储方式(邻接矩阵/邻接表)和遍历算法(DFS/BFS)是图论应用的基础,广泛用于社交网络、路径规划等领域。
2025-12-07 21:16:19
822
原创 C++String类
摘要: C++的string类解决了C语言字符数组的三大痛点:内存管理繁琐、操作低效不安全、无封装性。string提供动态内存管理、丰富成员函数和兼容C接口。标准库中的string类支持auto关键字简化迭代器声明,以及范围for循环简化遍历。其常用接口包括6种构造函数、4种迭代器类型,以及容量操作(size/length/capacity)、访问遍历([]/迭代器/范围for)等功能。string类通过封装底层实现,显著提升了字符串处理的效率和安全性,是C++中字符串操作的首选方式。
2025-11-25 21:53:39
825
原创 C++模板初阶
本文系统介绍了C++泛型编程的核心技术——模板机制。首先阐述了泛型编程的思想优势,包括代码复用、类型安全和高效性。重点讲解了函数模板的格式、实例化方式(隐式和显式)及参数匹配原则。对于类模板,详细说明了定义格式和成员函数实现方法,强调类模板必须显式实例化的特点。通过代码示例展示了如何使用模板编写类型无关的通用代码,为C++开发者掌握模板编程提供了实用指南。
2025-11-13 13:56:45
908
原创 C++内存管理
本文系统梳理了C/C++内存管理的核心内容。首先介绍了内存的四大区域划分(栈、堆、数据段、代码段)及其特性。详细讲解了C语言的malloc/calloc/realloc/free函数和C++的new/delete操作符,强调了new/delete会自动调用构造函数和析构函数的特性。分析了底层operator new和operator delete的实现原理,指出new/delete是malloc/free的封装升级。最后对比了malloc/free和new/delete的关键区别,包括功能范围、数组处理、初
2025-11-11 18:30:08
676
原创 类和对象下:C++ 面向对象六大核心特性详解:从初始化列表到匿名对象
本文介绍了C++中构造函数初始化列表、类型转换、static成员、友元、内部类和匿名对象等核心概念。重点包括:1)成员变量通过初始化列表初始化的语法规则和注意事项,特别是const、引用成员等必须使用初始化列表;2)类与内置类型的隐式转换机制;3)static成员的共享特性和访问方式;4)友元函数的单向访问特性;5)内部类与外部类的关系及访问权限;6)匿名对象的生命周期特点。这些特性共同构成了C++面向对象编程的重要基础,开发者需要掌握其语法规则和使用场景。
2025-11-08 14:31:13
618
原创 类和对象中:类的核心成员函数解析
文章摘要: C++类默认提供6个成员函数,其中4个最为重要:构造函数(初始化对象)、析构函数(清理资源)、拷贝构造函数(对象复制)和赋值运算符重载(对象赋值)。构造函数自动调用,可重载,对内置类型不初始化;析构函数在对象销毁时自动执行,内置类型不处理;拷贝构造用已有对象初始化新对象,默认浅拷贝,含资源需深拷贝;运算符重载让自定义类型支持内置运算符。这些函数若未显式定义,编译器会生成默认版本,但含动态内存等资源时需自定义实现以避免问题。
2025-11-02 19:07:25
634
原创 类和对象上:类的核心知识点详解
本文介绍了C++中类的基本概念和使用方法。主要内容包括:1)类的定义格式,成员变量和函数的声明方式,以及类内定义和类外定义两种实现方式;2)访问限定符(public/private/protected)的作用和使用场景;3)类的实例化概念,对象大小计算规则及内存对齐原则;4)this指针的原理和作用,它是编译器自动添加到成员函数的隐含参数,指向当前调用对象。重点强调了类的封装特性、成员访问控制、对象内存布局等面向对象编程的核心概念。
2025-10-26 20:24:42
777
原创 初识C++语法
摘要:本文介绍了C++中的命名空间、输入输出、缺省参数、函数重载和引用等核心概念。命名空间用于解决命名冲突问题,通过定义独立域隔离同名标识符。C++的输入输出流(cin/cout)相比C更智能便捷。缺省参数允许函数调用时省略部分实参,分为全缺省和半缺省两种形式。函数重载支持同名函数通过参数类型/数量不同实现多态。引用是变量的别名,主要用于高效传参和返回值,具有必须初始化、不可改变指向等特性,const引用可处理临时对象和权限控制问题。这些特性共同构成了C++区别于C语言的重要语法特征。
2025-10-24 20:20:56
1005
原创 力扣 - 移除元素题解
摘要 LeetCode 27题要求原地移除数组中等于给定值的元素,返回剩余元素个数。使用双指针法:快指针遍历数组,慢指针记录非目标值位置。当快指针遇到非目标值时,将其值赋给慢指针位置,两指针同时前进;否则仅快指针前进。最终慢指针位置即为剩余元素个数。该方法时间复杂度O(n),空间复杂度O(1),高效地实现了原地修改。
2025-10-19 10:56:56
336
原创 力扣 - 合并两个有序数组题解
这篇文章介绍了如何合并两个有序数组到第一个数组中。关键点是从后往前遍历两个数组,比较元素大小,将较大的元素依次放入第一个数组的末尾。这种方法避免了覆盖问题,时间复杂度为O(m+n)。具体实现使用三个指针分别跟踪两个数组的有效元素末尾和合并位置,最后处理剩余元素。这种逆向双指针方法是合并有序数组的高效解决方案。
2025-10-18 17:05:38
270
原创 编程之旅:开篇
目前我打算在暑假先将C/C++编程语言重学一遍巩固基础,后续再学习数据结构和算法,操作系统,数据库等等。我将会每天投入至少3到4个小时的时间学习编程。对于学习编程这件事,我认为上机实操非常重要,上完一节课后一定要自己动手写代码。写完一段代码后再对代码进行复盘,看看是否能对代码进行精简,写出高效的代码。当我们学习了一段时间后,我们可以在LeetCode网站上刷题练习。我是Leo,目前是一个编程新手,虽然我现在技术能力不强,但我坚信只要我持续的学习下去终会有一番成就。
2025-07-24 17:38:53
220
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅