
C++
文章平均质量分 97
介绍C++相关知识及实践
ZLRRLZ
学习中的技术小白
展开
-
【数据结构】二叉搜索树
本文主要介绍二叉搜索树,其概念为左子树节点值小于根节点,右子树节点值大于根节点,插入时依此规则确定位置。性能方面,最优时类似完全二叉树,时间复杂度低;最差时退化为单支树,时间复杂度高,平衡二叉搜索树等为此而生。实现上,插入操作在树空或遍历找到合适位置后插入新节点;查找是依据节点值大小比较来确定查找方向;删除需分多种情况处理,以维持二叉搜索树特性。使用场景包括 key 搜索场景如小区车库车牌识别、文章单词拼写检查,以及 key/value 搜索场景如中英互译字典、商场车库计费、文章单词计数等,还给出了相应代码原创 2025-01-09 16:38:45 · 1867 阅读 · 45 评论 -
【C++】多态
本文围绕 C++ 多态展开,涵盖概念、动态多态的定义及实现、纯虚函数与抽象类、动态多态原理等内容。先是通过实例引出多态概念,接着介绍动态多态构成条件,包括虚函数、重写规则等,还探讨了如协变、析构函数重写、override 和 final 关键字等相关问题,以及重载、重写、隐藏的对比。对于纯虚函数和抽象类,解释其特点与关系,并以车的示例说明。在动态多态原理部分,介绍虚函数表指针,阐述动态多态实现方式、动态绑定与静态绑定,以及虚函数表的构成与作用等,还展示相关代码及运行结果辅助理解。原创 2024-12-28 15:20:28 · 2631 阅读 · 53 评论 -
【C++】继承
本文全面介绍 C++ 继承相关内容。包括继承的概念及定义,用实例展示如何通过继承实现代码复用及不同继承方式下基类成员访问变化;基类和派生类转换,说明子类可赋值给基类但反之不行;继承作用域中的隐藏规则及相关选择题;派生类默认成员函数生成方式及不能被继承的类的实现;继承与友元、静态成员的关系;多继承及菱形继承问题,如虚继承解决数据冗余和二义性、指针偏移问题及 IO 库中的菱形虚拟继承;最后对比了继承(is - a)和组合(has - a)的关系。原创 2024-12-11 19:54:32 · 2386 阅读 · 61 评论 -
【C++】string类的模拟实现
本文围绕 C++ 中 string 类展开。首先介绍了 string 类的模拟实现,包括构造函数、浅拷贝与深拷贝问题,以及拷贝构造和赋值运算符重载的传统与现代写法。现代写法利用临时对象和自动析构特性,提高效率与资源利用率。还介绍了 string 类的其他接口如迭代器和各种操作函数等。接着说明了在 vs 和 g++ 下 string 的结构特点。此外提到了写时拷贝的概念及读取缺陷。最后给出了扩展阅读方向。原创 2024-12-02 22:56:28 · 1639 阅读 · 63 评论 -
【C++】模板进阶
本文介绍了 C++ 中的非类型模板参数、模板特化和模板分离编译。非类型模板参数可作为常量使用,能创建不同大小的静态数据结构。模板特化包括函数模板特化和类模板特化,用于处理特殊情况,其中函数模板特化不推荐使用,类模板特化有全特化和偏特化等形式。模板分离编译是将程序分为多个源文件分别编译,对于模板的分离编译可能会出现问题,可通过一些方法解决。文章还介绍了模板的一些应用示例及注意事项。原创 2024-12-02 19:15:56 · 1331 阅读 · 24 评论 -
【C++】stack和queue
本文介绍 C++ 中的 stack、queue 和 priority_queue。stack 模拟数据结构栈,有常用接口如 push、pop 等,底层默认容器为 deque。queue 模拟队列,先进先出,底层也可用 deque,介绍了 deque 的原理、优势缺陷及为何作为 stack 和 queue 底层容器。priority_queue 本质是堆,默认大堆,可通过仿函数控制大小堆及自定义类型比较,展示了在 OJ 中的用法和模拟实现,通过对 vector 封装和堆排序算法实现。原创 2024-11-30 22:24:26 · 2173 阅读 · 58 评论 -
【C++】list容器及其模拟实现
本文介绍了 C++ 中的 list。首先讲解了 list 的介绍与使用,包括底层结构为带头双向循环链表,常见接口如构造函数、迭代器用法、容量操作、元素访问、修改操作等,还介绍了迭代器失效问题及处理方法。接着模拟实现了 list,包括节点结构、功能接口、迭代器实现、构造与析构函数等。此外,还介绍了 list 的反向迭代器实现,并对比了 list 与 vector 的底层结构、特性及应用场景。原创 2024-11-24 12:12:41 · 2061 阅读 · 30 评论 -
【C++】vector
本文介绍了 C++ 中的 vector。首先讲解了 vector 的介绍与使用,包括各种构造函数、迭代器用法、空间增长问题、增删查改操作及迭代器失效问题,还介绍了 vector 在 OJ 中的使用。接着深度剖析并模拟实现了 vector 的核心框架接口,分析了使用 memcpy 拷贝的问题及动态二维数组的理解,强调涉及资源管理时不能用 memcpy,展示了如何用 vector 构建动态二维数组。原创 2024-11-18 21:59:37 · 1335 阅读 · 7 评论 -
【C++】string类(附题)
本文介绍了 C++ 标准库中的 string 类。学习 string 类是因为 C 语言字符串有不足且实际中广泛使用 string 类。string 类类似字符容器,支持不同编码。文中讲解了 auto 和范围 for 的用法,以及 string 类的常用接口,包括构造、容量操作、访问遍历、修改操作和非成员函数等。还通过多个编程题目展示了 string 类的实际应用,如反转字母、找唯一字符、计算最后单词长度、验证回文、字符串相加、翻转字符串等,帮助读者深入理解 string 类的功能和用法。原创 2024-11-15 11:32:51 · 1246 阅读 · 0 评论 -
【C++】模板初阶
本文介绍了 C++ 模板编程基础。包括泛型编程,利用模板避免重复代码,实现通用功能;函数模板,有概念格式、原理实例化及参数匹配原则,可根据实参推演或显式指定类型;类模板,涵盖定义格式、实例化方法及按需实例化问题,不建议声明定义分离,按需实例化时使用成员函数才实例化,不影响基本语法检查。总之,模板为 C++ 编程提供了强大的代码复用手段,方便实现通用功能和适应不同类型需求。原创 2024-11-10 14:13:40 · 1079 阅读 · 6 评论 -
【C++】C/C++内存管理
本文深入讲解了 C/C++ 的内存分布以及不同的内存管理方式。内容涵盖 C 语言中的动态内存管理函数(malloc/calloc/realloc/free),C++ 的内存管理方式(new/delete 和 operator new/operator delete),new 和 delete 的实现原理,定位 new 表达式以及 malloc/free 和 new/delete 的区别等多个重要方面。通过丰富的代码示例和详细的解释,为读者清晰地呈现了 C/C++ 内存管理的核心知识和关键要点。原创 2024-11-04 21:54:05 · 992 阅读 · 15 评论 -
【C++】类和对象(附题)
本文详细介绍了 C++ 中类的多个重要概念,包括类的定义、实例化、this 指针、与 C 语言实现 Stack 对比、类的默认成员函数、构造函数、析构函数、拷贝构造函数、赋值运算符重载、取地址运算符重载、再探构造函数、类型转换、static 成员、友元、内部类、匿名对象和对象拷贝时的编译器优化等内容,为 C++ 学习者全面阐述了类相关的知识要点。原创 2024-10-24 14:32:02 · 1566 阅读 · 11 评论 -
【C++】C++基础
本文全面介绍 C++ 多个重要特性。包括 C++98 关键字,首个程序的 C 与 C++ 对比写法。详细阐述命名空间的价值、定义及使用方法,可解决命名冲突,能嵌套且多文件同名会合并。还涵盖 C++ 输入输出、缺省参数、函数重载、引用、内联函数和 nullptr。引用可简化传参,const 引用有特定用途。内联函数替代宏函数但要注意代码膨胀。nullptr 避免了 C++ 中 NULL 的风险。为 C++ 学习者提供了丰富的知识内容。原创 2024-10-02 20:07:54 · 1707 阅读 · 7 评论 -
【C++】C++前言
本文全面介绍了 C++ 语言。包括其定义为在 C 语言基础上引入面向对象概念的编程语言,涵盖面向过程与面向对象编程特点;发展历史可追溯至 1979 年,历经标准化等过程;版本不断更迭,有丰富的语法更新;提供了参考文档链接;阐述了其在编程语言排行榜中的地位、广泛的应用领域以及学习方法,如他人学习经验分享和个人学习建议,包括多总结、常看书、勤刷题及推荐书籍等。原创 2024-07-23 15:37:41 · 1670 阅读 · 12 评论