C++教程
文章平均质量分 93
C++由入门到入土
小陈又菜
你不开始做,就永远不知道自己到底有多强!
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
【C++】你的二叉搜索树为什么慢?因为你还没解锁“平衡”的力量--AVL树核心详解
你以为二叉搜索树就够用了?不学会AVL树,你可能永远不知道“平衡”的力量!本文手把手带你攻克经典自平衡二叉搜索树——AVL树,不止是理论,我们从零实现一套完整的AVL树结构!你将学到:四种核心旋转策略:左单旋、右单旋、左右双旋、右左双旋(附完整代码)如何用平衡因子精准判断何时该旋转?从顺序插入到随机数据的多场景测试验证?为什么AVL树能做到 O(logN) 的极致查询效率?重要结论: AVL树是静态数据查询的王者,但却是频繁修改场景的“玻璃人”——理解它的优缺点,才能做出更好!原创 2025-10-22 12:34:31 · 841 阅读 · 9 评论 -
【数据结构--C++】二叉搜索树:一听就会一写就废?这份带源码的避坑指南请收好!
你写的程序为什么有时候快如闪电,有时候却慢如蜗牛?背后的秘密,可能就藏在一棵“树”里。这可不是普通的树,而是一棵能让搜索效率产生天壤之别的二叉搜索树!我们将彻底拆解它:从让查找“秒开”的黄金法则,到插入/删除的动态平衡术;从仅作“安检”的K模型,到堪比“档案库”的KV模型。最后,我们还会揭秘它为何会“退化”成性能杀手,以及高手们(AVL、红黑树)是如何巧妙化解的。文末附可直接运行的高效C++代码,带你从根本上理解现代数据的组织智慧。原创 2025-10-12 10:39:52 · 741 阅读 · 3 评论 -
【C++】透视C++多态:从虚函数表到底层内存布局的完全拆解
深入虚函数表核心,掌握多态实现原理!本文带你直击:虚表如何实现"同一调用,不同行为",动/静态绑定底层区别,实战打印虚表验证多态,多继承虚表布局解析,从使用到底层,彻底搞懂C++多态精髓!原创 2025-10-01 10:51:15 · 904 阅读 · 2 评论 -
【C++】面试官爱的C++多态八股文,这次让你彻底搞懂!
想知道如何用同一段代码让不同对象展现出独特行为?C++多态正是实现这一魔法的关键!本文将带你从虚函数的使用技巧一路杀到底层虚函数表的实现机制,彻底掌握协变、析构函数重写等高级玩法。更有final与override关键字的实战秘籍,助你写出更安全、更现代的C++代码!原创 2025-09-29 13:13:19 · 992 阅读 · 6 评论 -
【C++】别再用错public了!C++继承暗坑全图鉴,虚继承才是救世主
C++继承速通:从代码复用到菱形暴击,一篇拿捏九种权限、构造顺序、虚继承黑科技!原创 2025-09-26 17:04:41 · 781 阅读 · 18 评论 -
【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 · 979 阅读 · 7 评论 -
【C++】STL--从零实现stack栈和queue队列的所有关键操作
本文介绍了栈(stack)和队列(queue)两种容器适配器的实现。栈遵循后进先出原则,基于deque等底层容器实现,提供push、pop、top等接口;队列遵循先进先出原则,同样基于deque等容器实现,支持push、pop、front/back访问等操作。文章详细说明了它们的接口设计,并通过测试用例验证了功能实现,包括基础操作测试、不同底层容器测试以及边界情况测试。测试结果表明,这两种容器适配器均能正确处理元素入栈/队列、出栈/队列以及空容器等特殊情况。原创 2025-09-18 12:19:02 · 904 阅读 · 4 评论 -
【C++】STL--List使用及其模拟实现
本文介绍了C++中list容器的基本特性、实现原理及常见接口。list是基于双向链表实现的序列容器,支持高效插入/删除操作(O(1))但不支持随机访问(O(n))。文章详细讲解了list迭代器的实现方式,包括运算符重载;分析了构造/析构函数、容量查询、插入删除等核心接口的实现原理;特别强调了list迭代器失效问题及解决方案;最后通过与vector的对比,总结了list在插入删除效率、空间利用率等方面的特点及适用场景。list适合频繁插入删除但不需随机访问的场景。原创 2025-09-15 11:37:00 · 1227 阅读 · 0 评论 -
【C++】STL--Vector迭代器失效问题
本文深入探讨了C++ vector中迭代器失效问题。主要包括:1)空间改变操作(如扩容)会导致迭代器指向旧空间而失效;2)元素删除操作可能导致迭代器失效,特别是尾删时;3)对比VS和g++编译器对失效迭代器的处理差异,VS更严格而g++可能有隐患。文章通过代码示例说明失效场景,并强调无论何种编译器都应重新赋值失效迭代器以确保程序正确性。原创 2025-09-15 11:36:40 · 789 阅读 · 0 评论 -
【C++】STL--Vector使用及其模拟实现
本文介绍了C++ STL中的vector容器,包括其底层实现原理、常用接口及模拟实现。vector是动态数组,采用连续内存存储,支持高效随机访问。文章详细讲解了vector的构造方式、迭代器使用、空间管理策略(如扩容机制在VS和gcc下的差异),以及增删改查等核心操作的具体实现。通过代码示例展示了push_back、insert、erase等关键函数的实现逻辑,并提供了完整的测试用例验证功能。最后比较了不同编译环境下的扩容行为差异,帮助读者深入理解vector的内部工作机制。原创 2025-09-11 16:51:39 · 1006 阅读 · 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 · 974 阅读 · 1 评论 -
【C++】Template:让你的代码更通用更优雅
本文介绍了C++中的模板编程,主要包含函数模板和类模板。函数模板通过参数化类型实现代码复用,包括隐式/显式实例化及匹配原则(优先匹配普通函数,不允许自动类型转换)。类模板用于创建通用类结构,实例化时需指定具体类型。模板编程是泛型编程的基础,能提高代码复用率和可维护性。原创 2025-09-06 14:01:25 · 1181 阅读 · 0 评论 -
【C++】string类--构造、拷贝、赋值及其模拟实现
本文介绍了C++中string类的出现原因及实现。由于C语言字符串处理存在与数据分离、内存管理不便等问题,C++设计了string类来提供更安全的字符串操作。string本质是basic_string模板类的char类型实例化。文章详细讲解了string的构造函数、拷贝构造和赋值运算符重载的实现,特别强调了异常安全处理和现代写法中使用临时对象交换的技巧。通过模拟实现展示了string类的基本结构和内存管理机制,为理解标准库string的实现提供了参考。原创 2025-09-06 14:01:06 · 1049 阅读 · 0 评论 -
【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 · 929 阅读 · 0 评论 -
【C++】类和对象--初始化列表、友元、static成员、内部类
本文深入讲解C++类和对象的核心概念,重点包括:1.构造函数的初始化列表使用及其必要性,特别是对const成员、引用成员和自定义类型成员的初始化;2.explicit关键字禁止单参构造函数的隐式转换;3.静态成员变量和静态成员函数的特性及使用场景;4.C++11成员初始化新特性;5.友元函数和友元类的定义与使用限制;6.内部类的定义及其作为外部类友元的特性。文章通过代码示例详细演示了这些核心概念的实际应用场景及注意事项。原创 2025-08-25 07:41:49 · 927 阅读 · 0 评论 -
【C++】类和对象--日期类Date补充及流提取、流插入
本文主要介绍了C++中Date日期类的三个重要补充内容:1. const成员函数的使用场景和注意事项,包括权限问题;2. 取地址操作符重载的实现及适用场景;3. 流提取(>>)和流插入(<<)运算符重载的详细实现方法。重点讲解了如何通过友元函数实现自定义类型的输入输出操作,并解决连续输入输出的返回值问题。文章通过具体代码示例展示了const成员函数、流操作符重载的实现细节,帮助读者深入理解这些重要概念在实际编程中的应用。原创 2025-08-25 07:41:12 · 867 阅读 · 0 评论 -
【C++】类和对象--一篇带你解决运算符重载实例--日期类
本文通过实现一个日期类(Date)来巩固C++运算符重载知识。主要内容包括:1. 实现日期类的基本功能,如构造函数、拷贝构造等;2. 重载比较运算符(==,<,<=,!=,>,>=),通过复用基础运算符减少代码量;3. 实现日期加减运算(+=,+,-=,-),注意处理跨月/跨年情况;4. 重载自增/自减运算符(++前置后置,--前置后置),利用参数区分前后置;5. 实现日期相减运算,计算两个日期之间的天数差。文中通过代码示例详细演示了每个运算符重载的实现方法,并提供了测试结果验证正确原创 2025-08-21 15:21:13 · 806 阅读 · 5 评论 -
【C++】类和对象--类中6个默认成员函数(2) --运算符重载
C++中的运算符重载概念:运算符重载的参数规则(操作数数量对应参数数量,成员函数隐含this指针),并指出传引用比传值更高效。5个不能重载的运算符(::、.、.*、?:、sizeof)原创 2025-08-08 21:01:55 · 687 阅读 · 0 评论 -
【C++】类与对象--类中的6个默认成员函数(1)
通过本篇你可以比较深入地了解到,6个默认成员函数中的构造函数、析构函数、拷贝构造函数同时篇末留了一个问题,深复制和浅复制的区别?原创 2025-07-29 11:29:35 · 868 阅读 · 0 评论 -
【C++】一篇带你了解C++中隐藏的this指针
通过阅读这篇文章能够对类和对象中隐藏的this指针有比较深入的了解原创 2025-07-16 22:47:05 · 694 阅读 · 3 评论 -
【C++】在C++中空指针用NULL来初始化还合适吗?
通过阅读这篇文章,大家可以对于空指针的初始化有个比较深入的了解。通过对比C++98和C++11的NULL和nullptr,来说明nullptr的优越性原创 2025-07-16 08:46:58 · 583 阅读 · 0 评论 -
【C++】带你一篇了解什么是OPP(面向对象编程),什么是封装?类和对象(上)
本文主要介绍了面向对象编程与面向过程编程的区别,以及C++中类的定义和使用。首先对比了两种编程范式:面向过程强调算法步骤,而面向对象关注数据和对象交互。通过足球统计案例展示了两种编程思维差异。然后详细讲解了C++类的定义方式、访问限定符(public/private/proprotected)的作用,以及封装的概念和优势。文章还解释了类的作用域、实例化过程,并分析了类对象的内存模型:成员变量存储在对象中,成员函数存放在公共代码段。最后指出类的大小仅包含成员变量,空类占用1字节空间。原创 2025-07-14 23:06:02 · 1265 阅读 · 1 评论 -
【C++】auto关键字 C++入门(5)
C++11中auto关键字被重新定义,从存储类修饰符变为类型推导指示符。auto让编译器在编译时自动推导变量类型,必须初始化且不能用于函数参数或数组声明。auto可与指针(*)、引用(&)结合使用,同一行多个auto变量类型必须一致。auto特别适用于新式for循环,配合引用可修改原数组元素。这种自动类型推导简化了代码编写,同时保持了类型安全性。原创 2025-07-13 21:01:44 · 845 阅读 · 0 评论 -
【C++】内联函数inline以及 C++入门(4)
C++内联函数(inline)的概念、作用及特性。内联函数对于编译器来说是一个建议,不代表使用了inline修饰,就一定在编译时就会使用函数体替换函数调用。原创 2025-07-11 22:37:15 · 790 阅读 · 0 评论 -
【C++】全套数据结构算法-线性表讲解(1)
在学习c++的同时复习一遍数据结构(复习的会更加深入一些),会深入底层一些(内存之类的)。然后加上题解,准备笔试题。原创 2025-07-11 15:58:10 · 1001 阅读 · 0 评论 -
【C++】一篇带你搞懂引用 C++入门(3)
能够比较深入地了解C++的引用,尤其是传值和传引用的区别,然后是引用的使用场景原创 2025-07-04 22:59:41 · 740 阅读 · 0 评论 -
【C++】函数重载底层原理 C++入门(2)
C++实现函数重载的底层机制是修改了函数命名规则,在符号表中加入了参数类型信息(如_Z3Addid),而C语言仅保留函数名导致无法区分同名函数。原创 2025-07-02 15:28:13 · 759 阅读 · 0 评论 -
【C++】HelloWorld解析 C++入门(1)
这个暑假开始c++语言的学习,因为经过Java的学习后还是觉得c++要更深入一些,偏向底层。然后在学习C++的过程中,要结合之前学过的C语言和数据结构知识,希望能写出优质的C++文章。与君共勉!原创 2025-07-02 15:27:53 · 1340 阅读 · 0 评论 -
通讯录管理小程序
通讯录管理系统,比较简单的一个小程序,重点在于养成良好的c++代码习惯。原创 2025-02-07 14:28:31 · 760 阅读 · 0 评论 -
C++基础语法
c++快速入门、C语言基础、基础知识点、数组、指针、结构体、关键字原创 2025-01-15 10:16:37 · 984 阅读 · 0 评论
分享