
C++
文章平均质量分 96
从基础开始详细讲解C++知识点。
pupu周子晗
路虽远,行则将至|既来之,则安之
展开
-
【C++11】列表初始化、右值引用、完美转发、lambda表达式
本文系统讲解了C++11的重要新特性,涵盖列表初始化、变量类型推导(auto/decltype)、范围for循环及新增容器(array、unordered系列等)。重点剖析右值引用与移动语义如何优化深拷贝性能,完美转发在模板编程中的应用,以及Lambda表达式简化仿函数设计的实践。通过代码示例与场景分析,阐释C++11在提升开发效率、增强类型安全及支持现代编程范式中的核心作用。适合开发者快速掌握C++11的核心改进,为高效编程提供实用指导。原创 2025-04-16 14:36:25 · 1344 阅读 · 0 评论 -
【C++11】简单讲解线程库的使用
文章摘要:本文系统讲解了C++标准库中的多线程编程工具,涵盖线程创建与管理(std::thread)、同步机制(互斥量、条件变量、原子操作)、异步操作(std::async、std::future/std::promise)及线程局部存储(thread_local)。通过代码示例详细演示了如何实现线程间安全协作(如交替打印奇偶数)、生产者-消费者模型,并对比了全局锁与局部锁的差异,探讨了std::lock_guard和std::unique_lock的RAII设计。同时解析了std::ref解决参数传递问题原创 2025-04-20 09:30:00 · 991 阅读 · 0 评论 -
【C++】输入输出流(IO流)
本文全面剖析C++的输入输出流(IO流)机制,对比C语言的scanf与printf,详解C++流的概念及其核心类(如cin、cout、文件流和字符串流)。内容涵盖标准IO流的特性、缓冲机制、错误状态处理,以及如何通过sync_with_stdio和tie优化IO性能。此外,深入探讨文件流的文本与二进制读写、自定义类型运算符重载实现序列化,并结合实例展示stringstream在结构化数据转换中的应用。文章还针对竞赛编程和实际开发场景,提供输入输出处理的实用技巧与注意事项,助力开发者高效掌握C++流的核心技术原创 2025-04-23 10:15:00 · 1059 阅读 · 0 评论 -
【C++】智能指针原理以及详解shared_ptr精简版实现
本文深入探讨C++智能指针的核心机制及其在内存管理中的应用。通过分析手动管理内存的复杂性,揭示内存泄漏的成因与危害,并介绍RAII原则如何通过对象生命周期自动化资源管理。重点解析unique_ptr的防拷贝设计、shared_ptr的引用计数实现及线程安全问题,结合代码示例演示智能指针的底层实现,包括引用计数管理、拷贝控制及线程安全优化。文章还对比了auto_ptr的缺陷与boost库的贡献,以及地址删除器最后通过实现一个支持原子操作的shared_ptr原创 2025-04-22 09:15:00 · 1193 阅读 · 0 评论 -
【C++】特殊类的设计、单例模式以及Cpp类型转换
本文深入探讨C++中特殊类的设计方法与类型转换机制。针对特殊类设计,详细解析如何实现禁止拷贝、限制对象创建于堆/栈、防止继承及单例模式(饿汉与懒汉),并分析其应用场景与线程安全问题。在类型转换部分,系统介绍C++四种强制转换操作符(static_cast、reinterpret_cast、const_cast、dynamic_cast)的原理与适用场景,剖析隐式转换的潜在风险(如数据截断与死循环),并对比C风格转换的缺陷。通过实例代码与场景分析,帮助开发者掌握高效、安全的编程实践,提升代码健壮性与可维护性。原创 2025-04-22 09:30:00 · 1969 阅读 · 0 评论 -
【C++】异常处理
本文系统剖析C++异常处理机制,对比C语言传统错误处理(终止程序、返回错误码)的局限性,详解throw/try/catch的使用原则与匹配逻辑,并通过代码示例演示异常栈展开、重新抛出及资源管理策略。深入探讨异常安全(避免构造函数/析构函数抛异常)与异常规范(noexcept关键字)。重点解析如何构建自定义异常体系(继承基类实现SQL、缓存、网络模块异常),结合多态与RAII机制提升程序鲁棒性。最后,分析C++标准库异常结构的不足,总结异常的核心优势(精准定位错误、简化深层调用链处理)与潜在缺陷(执行流混乱原创 2025-04-20 13:48:06 · 1032 阅读 · 0 评论 -
【C++】my_unordered_map,set的底层编写,以及解决编写时可能遇到的问题
本文深入探讨如何将基础哈希桶结构改造为支持STL风格unordered_map、unordered_set的高效容器。通过分析模板参数冲突、迭代器设计、const限定符兼容性等核心问题,逐步解析哈希表扩容机制、键值类型封装及操作符重载的实现细节。文章提供完整代码示例与编译错误解决方案,涵盖operator[]、const_iterator等高级特性,为理解C++模板编程与STL容器底层原理提供实践指导。原创 2025-04-13 15:20:26 · 1418 阅读 · 0 评论 -
【C++】哈希unordered_map和set的使用以及哈希表,哈希桶的概念以及底层实现
C++中的unordered_map与unordered_set基于哈希表实现,提供平均O(1)的插入、查找效率,元素无序存储;而map/set基于红黑树,保持有序但操作稳定在O(log n)。哈希容器通过开放定址法或拉链法解决冲突,负载因子超阈值自动扩容。有序容器适合范围查询,哈希容器则胜在快速访问。自定义键类型需提供哈希函数(如字符串特化BKDR算法)。性能测试显示:10万数据插入,哈希容器耗时仅为有序的1/7。根据场景选择:高频查找用哈希,有序遍历用红黑树,合理选择性能翻倍!原创 2025-04-13 09:19:07 · 1413 阅读 · 0 评论 -
【C++】STL:map与set的红黑树实现与封装
本文深入剖析C++ STL中map与set的底层实现,揭示其基于**红黑树(RBTree)**的核心设计。通过对比两者差异,解析map如何通过pair<K,V>存储键值对,而set直接使用键值;**仿函数(KeyOfT)**的巧妙设计解决了键值提取的通用性问题。详解红黑树的插入逻辑、颜色调整及迭代器封装,展示STL如何通过运算符重载隐藏底层复杂性。实战部分涵盖operator[]的实现、深拷贝陷阱及源码中哨兵节点的优化思想。最后结合面试高频考点,探讨封装意义与性能权衡,助你从底层掌握STL容器的精髓,进阶C原创 2025-04-08 09:34:10 · 1103 阅读 · 0 评论 -
【C++】一文搞懂红黑树:从理论到实战全覆盖
红黑树是一种通过节点颜色标记(红/黑)和路径约束规则实现近似平衡的二叉搜索树,确保最长路径不超过最短路径的两倍。其核心优势在于插入/删除效率高于AVL树,广泛应用于STL、数据库索引等领域。红黑树具有五大性质:颜色规则、根节点为黑色、无连续红节点、黑高一致和叶子节点为黑色。插入操作分为二叉搜索树插入和颜色调整,需根据父节点和叔叔节点颜色进行单旋或双旋调整。验证方法包括检查根节点颜色、无连续红节点以及所有路径黑色节点数一致。红黑树适合频繁插入删除的场景,而AVL树更适合查询密集型应用。原创 2025-04-03 09:47:24 · 983 阅读 · 0 评论 -
【C++】 AVL树学习:严格平衡二叉搜索树
AVL树是一种严格的自平衡二叉搜索树,通过限制左右子树高度差(平衡因子绝对值≤1)确保树的高度为O(log n),从而保证搜索、插入、删除操作的高效性。其核心优势在于适用于静态数据或查询密集型场景,如数据库索引、内存管理等。AVL树具有五大性质:二叉搜索树性质、平衡因子约束、高度平衡、动态调整和时间复杂度。插入操作分为二叉搜索树插入和平衡因子更新与旋转两步,平衡因子更新规则为插入左侧父节点平衡因子-1,插入右侧父节点平衡因子+1,当平衡因子为0时停止更新,为±2时触发旋转操作。AVL树有四种旋转操作:右单旋原创 2025-04-03 09:43:35 · 946 阅读 · 0 评论 -
【C++】map&set使用与实战 OJ题
C++ STL关联式容器(如set、map等)基于红黑树实现,以键值对形式高效管理数据,支持O(log n)时间复杂度的查找。与序列式容器不同,其元素按严格弱排序自动组织,支持去重、有序遍历及快速检索。核心容器包括set(唯一值集合)、map(键值映射)及允许重复的multiset/multimap。高阶操作涵盖自定义排序规则、范围查询(如lower_bound/upper_bound)及结合优先级队列统计高频元素。实战应用包括数组交集、链表深拷贝及词频统计等LeetCode高频题。掌握红黑树底层逻辑与容器原创 2025-04-01 09:07:10 · 1120 阅读 · 0 评论 -
【C++】搜索二叉树的实现以及应用
1️⃣:处理空树+重复值检测,代码鲁棒性提升!:类外友好访问设计,递归实现有序输出。:类似插入的二分搜索,时间复杂度O(h)。:分治左右子树空/非空场景,重点解析(右子树最小节点替换+父指针调整)。2️⃣:构建单词BST,快速检索正确性(如英汉词典)。:键值对存储(如水果计数),动态更新出现次数。3️⃣:插入/删除时判断_root是否为空,避免空指针崩溃。:精准定位右子树最小节点,修正父指针关联逻辑。4️⃣平衡性影响效率:理想O(logN) vs 退化O(N),为后续AVL树/红黑树埋下伏笔。原创 2025-03-24 10:45:00 · 1100 阅读 · 0 评论 -
【C++】多态:虚函数、协变、动静态绑定、虚表与内存模型
C++多态是面向对象的“变形魔法”,同一操作引发不同对象特有行为!🔥 核心要点:虚函数+重写:基类用virtual声明,子类override实现多态(协变、析构函数例外)。虚函数表:对象含虚表指针(_vfptr),运行时动态绑定函数地址,实现“传父调父,传子调子”。关键优势:扩展性强(如新增图形无需改渲染系统)、代码复用(统一接口调用不同逻辑)。避坑指南:析构函数必为虚函数防内存泄漏;多继承中虚表按基类顺序存储。 实战价值:从动物合唱团到菱形继承,案例+内存模型图解,助你掌握底层原理与高频面试题原创 2025-03-23 17:18:43 · 1043 阅读 · 0 评论 -
【C++】继承机制:从基础到避坑详细解说
本文系统讲解了C++继承的核心概念与常见问题。继承通过派生类复用基类特性,支持public、protected、private三种访问方式,基类私有成员对派生类不可见。派生类默认成员函数(构造、拷贝构造等)需显式调用基类对应方法,析构顺序遵循“先子后父”。菱形继承会导致数据冗余和二义性,可通过虚拟继承(virtual关键字)解决,其底层通过偏移量指针优化内存模型。此外,文章对比了继承(is-a关系)与组合(has-a关系),强调优先使用组合以降低耦合。最后总结了笔试高频问题,如菱形继承缺陷、多继承取舍等。原创 2025-03-22 18:01:03 · 875 阅读 · 0 评论 -
【C++】模版(非类型模版、模板的特化、模版分离编译)
模版(非类型模版、模板的特化、模版分离编译)原创 2025-03-11 14:50:36 · 822 阅读 · 0 评论 -
【C++】反向迭代器reverse_iterator
反向迭代器reverse_iterator原创 2025-03-10 21:16:08 · 743 阅读 · 0 评论 -
【C++】 优先级队列 priority_queue使用与模拟实现、详细讲解仿函数的使用
c++ 优先级队列 priority_queue使用与模拟实现、详细讲解仿函数的使用,以及对大堆小堆实现的复习原创 2025-03-10 14:49:57 · 1106 阅读 · 0 评论 -
【C++ 】STL容器适配器:stack和queue的实现机制与应用场景
本文章主要讲解栈和队列的使用以及模拟实现,还有对deque的分析原创 2025-03-09 17:39:51 · 723 阅读 · 0 评论 -
【C++】链表List使用与实现:拷贝交换与高效迭代器细致讲解
本篇文章主要讲解List容器的使用与List容器的模拟实现原创 2025-03-09 09:39:35 · 1256 阅读 · 0 评论 -
【C++】vector的简单使用和模拟实现
vector的使用与模拟实现原创 2025-03-07 14:21:47 · 1005 阅读 · 0 评论 -
【C++】string模拟实现
主要实现string类的构造、拷贝构造、赋值运算符重载以及析构函数再开始之前我们需要提供对底层字符数组的直接访问的函数也就是。原创 2025-02-24 16:24:05 · 594 阅读 · 0 评论 -
【C++】类和对象(下)
1.初始化列表中未给值和未给缺省值的变量,先给随机值,在进入构造函数中括号后,给定义对象时的值;2.初始化列表中给值和给缺省值的变量,优先使用初始化列表中给的值,在进入构造函数中括号后,给定义对象时的值;3.初始化列表中未给值和给了缺省值的变量,就先使用缺省值,在进入构造函数中括号后,给定义对象时的值;4.能用初始化列表、就用初始化列表5.在初始化列表中一个变量只能出现一次class Datepublic:,_n(1)private://声明int _year;原创 2024-11-23 10:45:00 · 867 阅读 · 0 评论 -
日期Date类的补充:流插入、流提取,以及对日期类的更新
日期Date类的补充:流插入、流提取,以及对日期类的更新原创 2024-11-22 10:30:00 · 416 阅读 · 0 评论 -
【c++】string类(上)
本文主要讲string类的一些常见使用:元素的修改、数据的访问、容量、迭代器、遍历构造原创 2024-11-14 11:00:00 · 1729 阅读 · 0 评论 -
【C++】类和对象(中)
本篇文章主要从这几个方面来继续讲解类和对象1. 类的6个默认成员函数2. 构造函数3. 析构函数4. 拷贝构造函数5. 赋值运算符重载6. const成员函数7. 取地址及const取地址操作符重载原创 2024-11-01 14:00:00 · 872 阅读 · 0 评论 -
【C++】类和对象(上)
本篇主要围绕以下来写内容:1.面向过程和面向对象初步认识2.类的引入3.类的定义4.类的访问限定符及封装5.类的作用域6.类的实例化7.类的对象大小的计算8.类成员函数的this指针原创 2024-09-28 18:31:07 · 890 阅读 · 0 评论 -
【C++】基础入门-命名空间、C++的输入输出、缺省参数、函数重载、引用、内联函数超详细讲解
这篇文章主要对c++的学习做一个基础铺垫,方便后续学习。主要通过示例讲解命名空间、c++的输入输出cout\cin,缺省参数、函数重载、引用、内联函数,auto关键字,for循环,nullptr以及涉及到的周边知识,面试题等。为后续类和对象学习打基础。原创 2024-09-28 14:50:52 · 1496 阅读 · 0 评论